フェールオーバー クラスター インスタンスの診断ログを表示して読む方法
SQL Server Resource DLL のすべての重大なエラーと警告イベントが、Windows イベント ログに書き込まれます。 sp_server_diagnostics (Transact-SQL) システム ストアド プロシージャによってキャプチャされる SQL Server に固有の診断情報の実行ログは、SQL Server フェールオーバー クラスター診断ログ ファイル (SQLDIAG ログとも呼ばれます) に書き込まれます。
開始する前に: Recommendations, Security
診断ログ設定の構成: Transact-SQL の使用
始める前に
推奨事項
既定では、SQLDIAG は SQL Server インスタンス ディレクトリのローカル LOG フォルダーに格納されます (例: 'C\Program Files\Microsoft SQL Server\MSSQL12.<AlwaysOn フェールオーバー クラスター インスタンス (FCI) の所有ノードの InstanceName>\MSSQL\LOG' です。 各 SQLDIAG ログ ファイルのサイズは 100 MB に固定されています。 10 個のログ ファイルがコンピューターに格納された後、新しいログとして再利用されます。
ログには、拡張イベント ファイル形式が使用されます。 sys.fn_xe_file_target_read_file システム関数は、拡張イベントによって作成されるファイルの読み取りに使用することができます。 行ごとに、XML 形式の 1 つのイベントが返されます。 XML データを結果セットとして解析するには、システム ビューに対してクエリを実行します。 詳しくは「sys.fn_xe_file_target_read_file (Transact-SQL)」をご覧ください。
セキュリティ
アクセス許可
fn_xe_file_target_read_fileを実行するには、VIEW SERVER STATE 権限が必要です。
SQL Server Management Studio を管理者として開きます。
SQL Server Management Studio を使用する
診断ログ ファイルを表示するには
[ファイル] メニューから、 [開く] 、 [ファイル] を選択し、表示する診断ログ ファイルを選択します。
イベントは、右ペインに行として表示されます。既定では、 名前と タイムスタンプ の 2 つの列だけが表示されます。
また、 [ExtendedEvents] メニューがアクティブ化されます。
他の列を表示するには、 [ExtendedEvents] メニューにアクセスし、 [列の選択] を選択します。
ダイアログ ボックスが開き、表示対象として選択できる列が表示されます。
[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\MSSQL12.MSSQLSERVER\MSSQL\Log\SQLNODE1_MSSQLSERVER_SQLDIAG_0_129936003752530000.xel',NULL,NULL,NULL)
)
AS XEventData
ORDER BY Time;
注意
WHERE 句を使用して、特定のコンポーネントまたは状態の結果にフィルターを適用することができます。
Transact-SQL の使用
診断ログのプロパティを構成するには
Note
この手順の例については、このセクションの後半の「 例 (Transact-SQL)」を参照してください。
ALTER SERVER CONFIGURATION
データ定義言語 (DDL) ステートメントを使用すると、sp_server_diagnostics (Transact-SQL) プロシージャによってキャプチャされた診断データのログ記録を開始または停止し、ログ ファイルのロールオーバー数、ログ ファイル サイズ、ファイルの場所などの SQLDIAG ログ構成パラメーターを設定できます。 構文の詳細については、「 Setting diagnostic log options」を参照してください。
例 (Transact-SQL)
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;