フェールオーバー クラスター インスタンスの診断ログを表示して読む方法

適用対象:SQL Server

SQL Server Resource DLL のすべての重大なエラーと警告イベントが、Windows イベント ログに書き込まれます。 sp_server_diagnostics (Transact-SQL) システム ストアド プロシージャによってキャプチャされる SQL Server に固有の診断情報の実行ログは、SQL Server フェールオーバー クラスター診断ログ ファイル (SQLDIAG ログとも呼ばれます) に書き込まれます。

ファイル名、ファイルの場所と形式

既定では、SQLDIAG は、SQL Server インスタンス ディレクトリのローカル ログ フォルダーに保存されます。たとえば、AlwaysOn フェールオーバー クラスター インスタンス (FCI) の所有元ノードの "C\Program Files\Microsoft SQL Server\MSSQL13.<インスタンス名>\MSSQL\LOG" です。 各 SQLDIAG ログ ファイルのサイズは最大 100 MB に固定されています。 10 個のログ ファイルがコンピューターに格納された後、新しいログとして再利用されます。 ファイル名は MACHINE_SQLINSTANCE_SQLDIAG_0_xxxxxxxxxxxxxxxxx.xel の形式で、最後の "xxxxxxxx" の部分は自動生成された番号となります。 たとえば、既定のインスタンスの場合、ファイル名は NODE1_MSSQLSERVER_SQLDIAG_0_133177967257760000.xel となり、名前付きインスタンスの場合、ファイル名は NODE1_SQL2019INST_SQLDIAG_0_133177967257760000.xel となります

ログには、拡張イベント ファイル形式が使用されます。 sys.fn_xe_file_target_read_file システム関数は、拡張イベントによって作成されたファイルを読み込んでそれを結果セットとして表示するために使用できます。 行ごとに、XML 形式の 1 つのイベントが返されます。 詳しくは「sys.fn_xe_file_target_read_file (Transact-SQL)」をご覧ください。

アクセス許可

VIEW fn_xe_file_target_read_fileを実行するには、SERVER STATE 権限が必要です。

SQL Server Management Studio を管理者として開きます。

SQL Server Management Studio を使用します

診断ログ ファイルを表示するには

  1. [ファイル] メニューから、 [開く][ファイル] を選択し、表示する診断ログ ファイルを選択します。

  2. イベントは、右ペインに行として表示されます。既定では、 名前タイムスタンプ の 2 つの列だけが表示されます。

    また、 [ExtendedEvents] メニューがアクティブ化されます。

  3. 他の列を表示するには、 [ExtendedEvents] メニューにアクセスし、 [列の選択] を選択します。

    ダイアログ ボックスが開き、表示対象として選択できる列が表示されます。

  4. [ExtendedEvents] メニューを使用し、 [フィルター] オプションを選択することによって、イベント データをフィルター選択したり並べ替えたりすることができます。

Transact-SQL を使用して診断ログ ファイルを表示する

診断ログ ファイルを表示するには

SQLDIAG ログ ファイル内のすべてのログ アイテムを表示するには、次のクエリを使用します。

SELECT
  xml_data.value('(event/@name)[1]','varchar(max)') AS 'Name'
  ,xml_data.value('(event/@package)[1]','varchar(max)') AS 'Package'
  ,xml_data.value('(event/@timestamp)[1]','datetime') AS 'Time'
  ,xml_data.value('(event/data[@name=''state'']/value)[1]','int') AS 'State'
  ,xml_data.value('(event/data[@name=''state_desc'']/text)[1]','varchar(max)') AS 'State   Description'
  ,xml_data.value('(event/data[@name=''failure_condition_level'']/value)[1]','int') AS   'Failure Conditions'
  ,xml_data.value('(event/data[@name=''node_name'']/value)[1]','varchar(max)') AS   'Node_Name'
  ,xml_data.value('(event/data[@name=''instancename'']/value)[1]','varchar(max)') AS   'Instance Name'
  ,xml_data.value('(event/data[@name=''creation time'']/value)[1]','datetime') AS 'Creation   Time'
  ,xml_data.value('(event/data[@name=''component'']/value)[1]','varchar(max)') AS   'Component'
  ,xml_data.value('(event/data[@name=''data'']/value)[1]','varchar(max)') AS 'Data'
  ,xml_data.value('(event/data[@name=''info'']/value)[1]','varchar(max)') AS 'Info'
FROM
 ( SELECT object_name AS 'event'
  ,CONVERT(xml,event_data) AS 'xml_data'
  FROM sys.fn_xe_file_target_read_file('C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log\SQLNODE1_MSSQLSERVER_SQLDIAG_0_129936003752530000.xel',NULL,NULL,NULL)
 )
AS XEventData
ORDER BY Time;

WHERE 句を使用して、特定のコンポーネントまたは状態の結果にフィルターを適用することができます。

Transact-SQL を使用して診断ログのプロパティを構成する

診断ログのプロパティを構成するには

この手順の例については、このセクションの後半の「 例 (Transact-SQL)」を参照してください。

データ定義言語 (DDL) ステートメントを使用して、 ALTER SERVER CONFIGURATIONsp_server_diagnostics (Transact-SQL) プロシージャによってキャプチャされた診断データのログ記録を開始または停止し、ログ ファイルのロールオーバー数、ログ ファイル サイズ、ファイルの場所などの SQLDIAG ログ構成パラメーターを設定できます。 構文の詳細については、「 Setting diagnostic log options」を参照してください。

例示

このセクションの例では、診断ログ オプションの値を設定する方法を示します。

A. 診断ログを開始する

次の例では、診断データのログ記録を開始します。

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG ON;

B. 診断ログを停止する

次の例では、診断データのログ記録を停止します。

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG OFF;

C. 診断ログの場所を指定する

次の例では、診断ログの場所を、指定されたファイル パスに設定します。

ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG PATH = 'C:\logs';

D. 各診断ログの最大サイズを指定する

次の例では、各診断ログの最大サイズを 10 MB に設定します。

ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG MAX_SIZE = 10 MB;

E. フェールオーバー クラスター インスタンス診断ログが有効になっているかどうかと現在の構成を確認する。

次の例では、dmv sys.dm_os_server_diagnostics_log_configurations を使用して現在の構成をチェックします。

SELECT is_enabled, [path], max_size, max_files
FROM sys.dm_os_server_diagnostics_log_configurations;

関連項目