トレース (マスター データ サービス)

Applies to: SQL Server - Windows only Azure SQL Managed Instance

マスター データ サービス (MDS) をインストールすると、エラー診断、サポート要求、アプリケーションの使用状況とパフォーマンスの監視に役立つトレース ログ機能に気付くことでしょう。 この記事では、トレース ログを有効にして設定する手順について説明します。 具体的には、この記事ではテキスト ログ ファイルに対するトレースについて説明します。 この記事では、MDS データベースの作成時に発生するエラーのトラブルシューティングに役立つログ ファイルを作成する手順についても説明します。

背景

マスター データ サービスは、ASP.NET Web アプリケーション (マスター データ マネージャー) と WCF サービスで構成されます。どちらも IIS と SQL Server データベースでホストされます。 マスター データ マネージャー要求と Web サービス API エンド ポイントへの外部呼び出しは、共通のサービス レイヤーによって処理されます。 サービス レイヤーでは、各操作の要求/応答、重要なイベント、エラーをログに記録できます。

IIS Web サーバー上のファイルにアクセスできる管理者は、MDS Web.config ファイルを変更することで、ログ記録を有効にすることができます。

既定では、Web.config ファイルは次のいずれかの Web アプリケーション フォルダーにあります。

  • SQL Server 2008 R2: program_files\Microsoft SQL Server\Master Data Services\WebApplication

  • SQL Server 2012 以降のバージョン: program_files\Microsoft SQL Server\<nnn>\Master Data Services\WebApplication

パス中の数字「nnn」は、インストールされている SQL サーバーのバージョンに対応します。 次の表にパスのバージョンを示します。

バージョン 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 アプリケーションのトレース ログ

SQL Server 2016 以降のバージョン

Web.config ファイルには、次のようなトレース セクションがあります。 このセクションは、SQL Server 2016 (13.x) マスター データ サービスで導入されています。

<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>

既定のトレース動作を次に示します。

  • Warning および ActivityTracing メッセージに対してトレースが有効になっています。

    詳細については、「 SourceLevels 列挙体」を参照してください。

  • ログは、[WebApplication] フォルダーの下の [Logs] フォルダーに保存されます。 既定の場所は、C:\Program Files\Microsoft SQL Server\nnn\Master Data Services\WebApplication\Logs です。

  • 日ごと、または 10 MB に達するたびにファイルが作成されます。

  • ディレクトリのサイズが 200 MB に達すると、最も古いログが削除されます。

  • ログの形式は CSV です。 次の表ではログの形式について説明しています。

    要素 説明
    時刻 トレースのエントリが発生する状況
    CorrelationID 要求ごとに 1 つの関連付け ID が割り当てられます。 この要求によってトリガーされるすべてのトレースは、同じ関連付け ID を共有します。
    UI でエラーが発生すると、エラー メッセージに関連付け ID が表示されます。
    操作 要求操作の名前。 要求が Web UI 要求の場合、URL が操作名になります。 要求が API 要求の場合、操作名はサービス名になります。
    Level このトレース エントリのレベル
    メッセージ トレースのメッセージ本文。

SQL Server 2014 以前のバージョン

最初にインストールされた Web.config ファイルの診断セクション

次のファイル スニペットは、最初にインストールされた Web.config ファイルの診断セクションを示しています。

Note

switchValueOff が設定されています。 さらに、例の行はコメント アウトされています。これらの行は、さまざまな種類のトレース リスナーを追加する例です。

<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>

ログ ファイルのトレースを有効にする

ログ記録を有効にするには、switchValueAll または下の表 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 ログ イベントの種類
イベントの種類 説明
[重大] 致命的なエラーまたはアプリケーションのクラッシュ
エラー 回復可能なエラー
警告 重大ではない問題
情報 情報メッセージ
詳細 デバッグ トレース メッセージ
スタート 論理操作の開始
阻止 論理操作の停止

ログ設定の推奨事項

  • 通常の操作では、この Off 設定を使用してログを完全に記録しないようにするか、ログを小さく保ちながら管理者に問題を通知する Error または Warning 設定を使用します。
  • All 設定は、サポート/トラブルシューティングの状況で使用します。
  • ActivityTracing はパフォーマンス測定または使用状況の監視に使用します。
  • Information は、ログを定期的にチェックしてクリーンアップする準備が整っっている場合にのみ使用します。 この設定ではログが長くなる可能性があります。 この設定は、使用状況や使用パターンを追跡するのに役立ちます。
  • ログに記録されるデータの量がパフォーマンスに悪影響を及ぼすので、通常の動作条件下では Verbose または All は使用しないでください。

製品サポート用のログ ファイルを作成する手順

予期しないエラーが発生し、さらに診断が必要な状況では、問題に至るまでのイベントをサービスの要求と応答と共にトレースするログ ファイルを作成すると便利です。

簡潔で役立つログ ファイルを生成するには、次の手順に従ってください。

注意事項

Web.config を更新すると、IIS の MDS アプリケーション ドメインがリサイクルされます。

  1. 可能であれば、IIS マネージャーの MDS アプリケーション プールを停止してください。

    警告

    これは、このアプリケーションをオフラインにできる場合にのみ行います。

  2. 可能であれば、現在のログ ファイル (既に存在するものがある場合) を移動または削除してください。

  3. テキスト エディターで Web.config ファイルを開きます。

    Note

    既定では、Web.config ファイルは次のいずれかの Web アプリケーション フォルダーにあります。

    • SQL Server 2008 R2: program_files\Microsoft SQL Server\Master Data Services\WebApplication
    • SQL Server 2012: program_files\Microsoft SQL Server\110\Master Data Services\WebApplication
  4. セクション system.diagnostics を探します。

  5. switchValueAll または ActivityTracing に変更し、この記事の「ログ ファイルトレースを有効にする」セクションに示すように、ログ ファイルの行をコメント解除します。

    1. switchValue="All" はエラー診断に使用します。
    2. switchValue="ActivityTracing" はパフォーマンス診断に使用します。
    3. 必要であれば、MdsTrace.log ファイル名の先頭にパスを付けることができます。
  6. アプリケーション プールが以前に停止している場合は、IIS で MDS アプリケーション プールを開始します。 それ以外の場合は、しばらくして Web アプリケーションのアクティビティが完了した後にログ ファイルが表示されるまで待ちます。 Web アプリケーションは、ファイルから構成設定を定期的に再読み込みします (数分以内)。

  7. 問題を再現し、エラーの原因となったものと同じアクションまたは要求を実行します。

  8. アプリケーション プールを停止できる場合:

    1. アプリケーション プールを停止します。
    2. ログ ファイルを取得します (プロセスの完了を待つ必要がある場合があります。また、アプリケーション プールを停止した後に遅延が発生する可能性があります)。

    または、ファイルをロックしないエディター (notepad.exe など) を使用してログ ファイルを開き、関連するトレース メッセージをコピーします。

  9. テキスト エディターを使用して Web.config ファイルを開き、switchValueOff または以前の値に戻します。

  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 

上の例に示すように、各エラーには次のデータ プロパティが含まれています。

プロパティ 説明
コード エラーの種類を識別する一意のエラー番号
説明 ローカライズされたエラー メッセージのテキスト
Context.FullyQualifiedName エラーに関係するオブジェクトの完全修飾名。 一部の名前は、そのコンテキスト内でのみ一意です。 エンティティは、ModelName : EntityName などのモデル名プレフィックスで修飾されます。
Context.Type エラーに関係するオブジェクトの種類
Context.Identifier エラーに関係するオブジェクトの識別子
Context.Identifier.Id オブジェクトの一意の GUID (指定されている場合、または使用可能な場合)
Context.Identifier.Name オブジェクトの名前 (指定されている場合、または使用可能な場合)
Context.Identifier.InternalId 非推奨 – 使用しないでください

MDS データベース作成の問題のトレース

次の手順を使用して、MDS データベースの作成時に発生するエラーのトラブルシューティングに役立つログ ファイルを作成できます。

  1. パス C:\Program Files\Microsoft SQL Server\Master Data Services\Configuration にある MDSConfigTool.exe.config ファイルを notepad.exe を使用して開きます。

  2. その行のサフィックス文字 を削除して、ファイル内の次の行をコメント解除します。

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

  3. switchValueAll に設定されていることを確認します。

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

  4. もう一度データベースの作成を試します。 次に、C:\Program Files\Microsoft SQL Server\Master Data Services\Configuration に保存されているファイル MdsConfigManagerTrace.log を開き、失敗に関するその他の情報を確認します。

外部リソース

ログ記録の改善のトラブルシューティング