追蹤 (Master Data Services)

適用於:SQL Server - 僅限 Windows Azure SQL 受控執行個體

安裝 Master Data Services (MDS) 之後,您可能會發現追蹤記錄功能適用於錯誤診斷、支援要求,以及監視應用程式的使用狀況與效能。 此文章涵蓋開啟及設定追蹤記錄的步驟。 具體而言,此文章說明如何追蹤文字記錄檔。 此文章也會討論建立記錄檔的程序,可協助針對建立 MDS 資料庫時可能發生的失敗進行疑難排解。

背景

Master Data Services 由 ASP.NET Web 應用程式 (Master Data Manager) 與WCF 服務所組成;這兩者均裝載於 IIS 與 SQL Server 資料庫中。 主資料管理員對 Web 服務 API 端點的要求與外部呼叫會由一般服務層處理。 此服務層可以記錄每個作業要求/回應、重要事件與錯誤。

您身為具有對 IIS 網頁伺服器上檔案存取權的管理員,可透過修改 MDS Web.config 檔案來啟用記錄功能。

根據預設,Web.config 檔案位於下列其中一個 Web 應用程式資料夾中:

  • SQL Server 2008 R2program_files\Microsoft SQL Server\Master Data Services\WebApplication

  • SQL Server 2012 與更新版本program_files\Microsoft SQL Server\<nnn>\Master Data Services\WebApplication

路徑中的數字 nnn 會對應到即將安裝的 SQL Server 版本。 下表會識別路徑的版本:

版本 nnn
SQL Server 2019 150
SQL Server 2017 140
SQL Server 2016 130
SQL Server 2014 120
SQL Server 2012 110

警告

更新 Web.config 將導致 IIS 中的 MDS 應用程式網域回收。 現有的使用者工作階段將遺失快取的資訊,而且使用者可能會遇到工作階段錯誤或頁面載入緩慢。 盡可能在離峰時間執行變更。

追蹤 MDS web-application 的記錄

SQL Server 2016 與更新版本

Web.config 檔案包含追蹤區段,如下所示。 此區段是在 SQL Server 2016 (13.x) Master Data Services 中引進。

<sources>  
     <!-- Adjust the switch value to control the types of messages that should be logged.   
           https://msdn.microsoft.com/library/system.diagnostics.sourcelevels  
           Use a switchValue of Verbose to generate a full log. Please be aware that   
           the trace file can get quite large very quickly. -->  
     <source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="Warning, ActivityTracing">  
          <listeners>  
          <!-- Set a directory path where the service account you chose while setting up Master Data Services has read and write privileges.  
               Default path is Logs in WebApplication folder, for example C:\Program Files\Microsoft SQL Server\130\Master Data Services\WebApplication  
               New log file will be created every day or every 10 mb.  
               When directory size hits the 200 mb limitation, the oldest file will be deleted. -->  
          <add name="FileTraceListener"  
               type="Microsoft.MasterDataServices.Core.Logging.FileTraceListener, Microsoft.MasterDataServices.Core"   
               initializeData="DirectoryPath = Logs; FileSizeInMb = 10; MaxDirectorySizeInMb = 200"/>  
          <remove name="Default"/>  
          </listeners>  
     </source>  
</sources>

以下是預設追蹤行為:

  • 針對 WarningActivityTracing 訊息啟用追蹤。

    如需詳細資訊,請參閱 SourceLevels 列舉類型

  • 記錄會儲存在 WebApplication 資料夾下的 Logs 資料夾中。 預設位置是 C:\Program Files\Microsoft SQL Server\nnn\Master Data Services\WebApplication\Logs

  • 每天或每 10 MB 建立檔案。

  • 當目錄大小達到 200 MB 時,即會刪除最舊的記錄。

  • 記錄格式是 CSV。 下表描述記錄格式:

    元素 描述
    Time 追蹤項目的發生時機
    CorrelationID 每個要求會指派一個相互關聯識別碼。 此要求觸發的所有追蹤將共用同一個相互關聯識別碼。
    當 UI 中發生錯誤時,相互關聯識別碼會出現在錯誤訊息中
    作業 要求作業名稱。 如果要求是 Web UI 要求,作業名稱會是 URL。 如果要求是 API 要求,作業名稱會是服務名稱
    層級 此追蹤項目的層級
    Message 追蹤的訊息主體

SQL Server 2014 與更舊版本

原始安裝 Web.config 檔案的診斷區段

下列檔案程式碼片段顯示原始安裝 Web.config 檔案中的診斷區段。

注意

switchValue 已設為 Off。 此外,會將範例程式碼註解化。這些程式碼行是新增各種類型追蹤接聽程式的範例。

<system.diagnostics>  
     <sources>  
     <!-- Adjust the switch value to control the types of messages that should be logged. -->  
          <source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="Off">  
          <listeners>  
          <!-- Enable and configure listeners as desired to obtain trace messages. -->  
          <!-- <add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsTrace.log" traceOutputOptions="DateTime" /> -->  
          <!-- <add name="EtwListener" type="System.Diagnostics.Eventing.EventProviderTraceListener, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"  
          initializeData="{F2A341B8-CA5F-49ad-B00C-A82D3FCF948B}"/> -->  
          <!-- <remove name="Default"/> -->  
          </listeners>  
         </source>  
     </sources>  
     <trace autoflush="true"/>  
</system.diagnostics>

開啟記錄檔追蹤

若要啟用記錄,將 switchValue 變更為 All 或另一個有效值,如下列表 1 中所述。 若要啟用記錄檔的輸出,請將 LogFileListener 行取消註解,如下列檔案程式碼片段所示:

<system.diagnostics>  
     <sources>  
          <!-- Adjust the switch value to control the types of messages that should be logged. -->  
          <source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="All">  
          <listeners>  
          <!-- Enable and configure listeners as desired to obtain trace messages. -->  
          <add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsTrace.log" traceOutputOptions="DateTime"/>  
          <!-- <add name="EtwListener" type="System.Diagnostics.Eventing.EventProviderTraceListener, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" initializeData="{F2A341B8-CA5F-49ad-B00C-A82D3FCF948B}"/> -->  
          <!-- <remove name="Default"/> -->  
          </listeners>
          </source>  
     </sources>  
     <trace autoflush="true"/>  
</system.diagnostics> 
表 1 - 適用於記錄的 SwitchValue 設定
設定 會記錄什麼內容
關閉
錯誤 只有錯誤
警告 錯誤和警告
資訊 錯誤、警告、資訊訊息
「詳細資訊」 「資訊」與其他偵錯追蹤資訊,包括 XML 格式的 API 要求與回應
ActivityTracing 僅啟動與停止事件
全部 「Verbose」與「ActivityTracing」
檔案名稱和路徑

initializeData 值是記錄檔的名稱。 這可以修改為另一個名稱,或包含所需的路徑。 如果未指定路徑,檔案將預設為 Web 應用程式目錄路徑 (Web.config 所在的位置)。

重要

MDS 應用程式集區的服務帳戶必須具有對記錄檔位置的寫入權限。

詳細資料的記錄層級

以下的表 2 描述可能記錄或排序的追蹤事件類別,最重要/關鍵的事件位於最上方。 上面的表 1 列出記錄 switchValue 的有效設定。 您可以調整此設定來產生適量的記錄詳細資料,以適應此情況。

表 2 - MDS 記錄事件類型
事件類型 描述
重大 嚴重錯誤或應用程式損毀
錯誤 可復原的錯誤
警告 非關鍵性問題
資訊 資訊訊息
「詳細資訊」 偵錯追蹤訊息
開始 開始邏輯作業
Stop 停止邏輯作業

記錄設定建議

  • 針對正常作業,請使用 Off 設定來避免完全記錄,或者使用 ErrorWarning 設定來讓記錄保持很小,同時警示管理員注意問題。
  • 針對支援/疑難排解情況使用 All 設定。
  • 使用 ActivityTracing 進行效能測量或使用狀況監視。
  • 只有在準備定期檢查和清除記錄時,才會使用 Information。 記錄可能會因為此設定而變得冗長。 此設定有助於追蹤使用狀況與使用狀況模式。
  • 請勿在一般作業情況下使用 VerboseAll,因為記錄的資料量將對效能造成負面影響。

針對產品支援建立記錄檔的步驟

在發生非預期的錯誤且需要進一步診斷的情況下,建立記錄檔以追蹤導致問題的事件以及服務要求與回應會很實用。

若要產生簡潔且實用的記錄檔,請遵循下列步驟:

警告

更新 Web.config 將導致 IIS 中的 MDS 應用程式網域回收。

  1. 如果可能,在 IIS 管理員中停止 MDS 應用程式集區。

    警告

    只有在應用程式可以離線時,才能執行此動作。

  2. 如果可能,移動或刪除目前的記錄檔 (如果已有一個記錄檔存在)。

  3. 在文字編輯器中,開啟 Web.config 檔案。

    注意

    根據預設,Web.config 檔案位於下列其中一個 Web 應用程式資料夾中:

    • SQL Server 2008 R2program_files\Microsoft SQL Server\Master Data Services\WebApplication
    • SQL Server 2012program_files\Microsoft SQL Server\110\Master Data Services\WebApplication
  4. 找出區段 system.diagnostics

  5. switchValue 變更為 AllActivityTracing,並將記錄檔行取消註解,如此文章的開啟記錄檔追蹤一節所示。

    1. 使用 switchValue="All" 進行錯誤診斷。
    2. 使用 switchValue="ActivityTracing" 進行效能診斷。
    3. 如有需要,可在 MdsTrace.log 檔案名稱前面加上路徑前置詞。
  6. 如果先前已停止應用程式集區,在 IIS 中啟動 MDS 應用程式集區。 或者,等候記錄檔在一段時間及 Web 應用程式活動後出現。 Web 應用程式將定期從檔案中重新載入組態設定 (應該在幾分鐘內)。

  7. 重現問題,並執行導致錯誤的相同動作或要求。

  8. 如果您能夠停止應用程式集區:

    1. 停止應用程式集區。
    2. 擷取記錄檔 (您可能需要等候流程完成;停止應用程式集區之後可能會有延遲)。

    或者,使用不會鎖定檔案的編輯器 (例如 notepad.exe) 來開啟記錄檔,並複製相關的追蹤訊息。

  9. 使用文字編輯器來開啟 Web.config 檔案,並將 switchValue 變更回 Off 或先前的值。

  10. 啟動應用程式集區 (若其已停止)。

    錯誤處理:所有服務作業都會在回應訊息的 OperationResult 物件內傳回錯誤的陣列或集合。 發生錯誤時,錯誤陣列也會將 XML 序列化,並寫入至特定 switchValue 設定的 Web 應用程式記錄檔,如上所述。

已寫入至記錄檔的 API 回應錯誤範例:

MDS Error: 0 :
<ArrayOfError xmlns="http://schemas.microsoft.com/sqlserver/masterdataservices/2009/09" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
     <Error> 
     <Code>110003</Code> 
          <Context> 
          <FullyQualifiedName>Model1</FullyQualifiedName> 
          <Identifier> 
               <Id>00000000-0000-0000-0000-000000000000</Id> 
               <Name>Model1</Name> <InternalId>0</InternalId> 
          </Identifier> 
          <Type>Model</Type> 
          </Context> 
     <Description>The name already exists. Type a different name.</Description> 
     </Error> 
</ArrayOfError> 
DateTime=2009-12-10T20:48:05.6949548Z error object contents 

如上述範例所示,每個錯誤都會包含下列資料屬性:

屬性 描述
程式碼 識別錯誤類型的唯一錯誤號碼
Description 已當地語系化的錯誤訊息文字
Context.FullyQualifiedName 錯誤中所涉及物件的完整名稱。 某些名稱在其內容中是唯一的。 實體必須具備模型名稱前置詞,例如 ModelName : EntityName
Context.Type 錯誤中所涉及物件的類型
Context.Identifier 錯誤中所涉及物件的識別碼
Context.Identifier.Id 物件的唯一 GUID (若已指定或可用)
Context.Identifier.Name 物件的名稱 (若已指定或可用)
Context.Identifier.InternalId 已取代 – 不使用

追蹤 MDS 資料庫建立問題

您可以使用下列程序來建立記錄檔,以協助針對建立 MDS 資料庫時可能發生的失敗進行疑難排解:

  1. 使用 notepad.exe,在 C:\Program Files\Microsoft SQL Server\Master Data Services\Configuration 路徑中,開啟 MDSConfigTool.exe.config 檔案。

  2. 在該檔案中,透過移除該行上的 尾碼字元,來將下列這一行取消註解:

    <add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsConfigManagerTrace.log" traceOutputOptions="DateTime"/>

  3. 確定將 switchValue 設為 All

    <source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="All">

  4. 再次嘗試建立資料庫。 然後,開啟儲存至 C:\Program Files\Microsoft SQL Server\Master Data Services\ConfigurationMdsConfigManagerTrace.log 檔案,並檢閱相同的檔案,以取得有關失敗的其他資訊。

外部資源

針對記錄改善進行疑難排解 (英文)