[SQL Troubleshooting] 第1回 : Tips - SQL Server エラーログとイベント ログを採取する (SQL 2000 ~ 2014) Ver 2.0

横井 羽衣子
SQL Developer Support Engineer

今回は、SQL Server のエラーログと、イベント ログの取得方法についてご紹介します。
これらのログは、お問い合わせをいただく際に、殆ど必ず採取をお願いしておりますが、ログはテキストファイルであり、特別な解析ツールを必要としません。
ログをお客様ご自身でご覧いただくことで、お急ぎの状況などで SQL Server でトラブルが発生した際に、SQL Serverでどのようなエラーが発生しているかをご自身で把握することもできます。また、弊社にお問い合わせいただく際は、SQL Server エラーログとイベントログをご提供いただくことで、SQL Server 内部の問題であるか、それともクライアントからSQL Serverに接続するまでの間の問題であるかなどの初動の判断が早くなり、解決までの時間の短縮が図れますので、事前提供を是非ご検討ください。

SQL Server エラーログとは

SQL Server "エラー" ログという名前から、エラーが記録されているだけのファイルのイメージをお持ちになる方もいらっしゃるかもしれませんが、実際には SQL Server エラーログには、エラーだけでなく、様々な情報が記録されています。トラブルシュート時だけでなく、たとえばサポート技術情報 321185“SQL Server のバージョンとエディションを識別する方法” にある T-SQL を発行しなくても SQL Server の詳細なバージョン情報を取得できたり、今現在対象のインスタンスの待ち受けは何であるかなども把握することができる重要なファイルです。

SQL Server のエラーログの場所

SQL Server のエラー ログは、製品バージョンによって場所が若干異なりますが、現在のログの名前はいずれも "ERRORLOG" (※拡張子なし) になります。
既定では、SQL Server を起動するたび、ERRORLOG が作成されます。その前のログは、ERRORLOG.1 に変更され、その前のログもそれにあわせて ERRORLOG.1 は ERRORLOG.2 に、ERRORLOG.2 は ERRORLOG.3 へと名前が変更されていきます。
最新のログを見たい場合は、ERRORLOG を確認し、過去の特定の事象についてのログを見たいのであれば、Windows エクスプローラの更新日時を見て、現象の発生時点の時間を含むと思われるログを開きます。なお、お問い合わせの際は、Log 格納フォルダ全体を Zip などに圧縮いただき、ご提供をお願いします

image

SQL Server 2000

※ 重要なお知らせ ※ SQL Server 2000 のサポートは終了しました

SQL Server 2000 は、2013 年 4 月 9 日に拡張サポートが終了し、サポート提供対象外となりました。詳細については、「 SQL Server のサポートの更新 (英語)」を参照してください。SQL Server 2000 Service Pack 3a のサポートの終了の詳細については、 こちら (英語)を参照してください。SQL Server 2000 Service Pack 4 のサポートの終了の詳細については、 こちら (英語)を参照してください。 https://technet.microsoft.com/ja-jp/sqlserver/bb972143.aspx

既定ではエラーログの場所は以下となります。

C:\Program Files\Microsoft SQL Server\MSSQL\LOG

具体的に格納先を確認するには、以下の方法をとります。

1. "スタート" - "すべてのプログラム" - "Microsoft SQL Server" - "Enterprise Manager" を選択します。
---> [SQL Server Enterprise Manager] 画面が表示されます。
2. "コンソール ルート" - "Microsoft SQL Server" - "SQL Server グループ" - "(<該当のンスタンス名>) (Windows NT)" - 右クリック - "プロパティ" を選択します。
---> [SQL Server のプロパティ(設定) - (<該当のインスタンス名>)] 画面が表示されます。
3. "全般" タブ - [起動時のパラメータ] ボタンを押します。
---> [起動時のパラメータ - (<該当のインスタンス名>)] 画面が表示されます。
4. "-e" から始まるパラメータの文字列を確認します。

[例]
;-eC:\Program Files\Microsoft SQL Server\MSSQL\LOG\ERRORLOG

5. 上記手順 4 にて確認しましたパスへ移動し、"LOG" フォルダ直下全てのファイルを採取します。

image

SQL Server 2005

SQL Server 2005 のエラーログは、既定では下記フォルダに保存されています。

C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG

MSSQL.n の n は整数値です。複数のインスタンスを構成している環境の場合など、1 や 2 と数字が割り当てられます。
対象のインスタンスのログの格納先を確認する方法は下記のとおりです。

1. [スタート] - [すべてのプログラム] - [Microsoft SQL Server 2005] - [構成ツール] - [SQL Server 構成マネージャ] を選択します。

image

2. [SQL Server Configuration Manager] 画面が表示されますので、[SQL Server 2005 のサービス] - [SQL Server(<該当のインスタンス名>)] - 右クリック - "プロパティ" を選択しますと、[SQL Server(<該当のインスタンス名>)のプロパティ] 画面が表示されます。

image

(付記) SQL Server 2005 が、SQL Server 2008 以降と共存した環境の場合は、SQL Server 2008 (もしくは R2) の構成マネージャから情報を見ることもできます。

image

3. [詳細設定] タブ - [起動時のパラメータ] に指定されている文字列をコピーし、メモ帳などに貼り付けます。

image

image

4. "-e" から始まるパラメータの文字列を確認し、SQL Server のエラーログの場所を確認します。その際は、"ERRORLOG" の前までがフォルダになります。

-eC:\Program Files(x86)\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG

上記例の場合は、”C:\Program Files(x86)\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\” までがログ格納フォルダになります。

SQL Server 2008

SQL Server 2008 のエラーログは、既定では下記フォルダに保存されています。 MSSQL10.<インスタンス名> というのがポイントです。

C:\Program Files\Microsoft SQL Server\MSSQL10.<インスタンス名>\MSSQL\LOG

1. [スタート] - [すべてのプログラム] - [Microsoft SQL Server 2008] - [構成ツール] - [SQL Server 構成マネージャ] を選択し、[SQL Server Configuration Manager] 画面が表示されます。

image
SQL Server 2008 と SQL Server 2008 R2 が共存し���いる環境においては、構成マネージャは SQL Server 2008 R2 と共通になります。 その場合は、上記手順 1. において、[スタート] - [すべてのプログラム] - [Microsoft SQL Server 2008 R2] - [構成ツール] - [SQL Server 構成マネージャ] を選択してください。

2. "SQL Server のサービス" - "SQL Server(<該当のインスタンス名>)" - 右クリック - "プロパティ" を選択します。[SQL Server(<該当のインスタンス名>)のプロパティ] 画面が表示されます。
3. [詳細設定] タブ - [起動時のパラメータ] に指定されている文字列をコピーし、メモ帳などに貼り付けます。

image

image

image

4. "-e" から始まるパラメータの文字列を確認します。"ERRORLOG" の前までが格納フォルダのパスになります。

例) 上記例の場合

;-eC:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Log\ERRORLOG

例) 既定のインスタンスの場合

;-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG

SQL Server 2008 R2 および SQL Server 2008 が共存した環境

SQL Server 2008 のエラーログは、既定では下記フォルダに保存されています。
SQL Server 2008 R2 の場合、MSSQL10_50.<インスタンス名> という形式になります。

C:\Program Files\Microsoft SQL Server\MSSQL10.<インスタンス名>\MSSQL\LOG

1. [スタート] - [すべてのプログラム] - [Microsoft SQL Server 2008 R2] - [構成ツール] - [SQL Server 構成マネージャ] を選択し、[SQL Server Configuration Manager] 画面が表示されます。
2. "SQL Server のサービス" - "SQL Server(<該当のインスタンス名>)" - 右クリック - "プロパティ" を選択します。[SQL Server(<該当のインスタンス名>)のプロパティ] 画面が表示されます。
3. [詳細設定] タブ - [起動時のパラメータ] に指定されている文字列をコピーし、メモ帳などに貼り付けます。

image

image

4. "-e" から始まるパラメータの文字列を確認します。"ERRORLOG" の前までが格納フォルダのパスになります。

例) 上記例の場合

;-eC:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Log\ERRORLOG

例) 既定のインスタンスの場合

;-eC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG  

SQL Server 2012

SQL Server 2012 のエラーログは、既定では下記フォルダに保存されています。 MSSQL**11**.<インスタンス名> というのがポイントです。

C:\Program Files\Microsoft SQL Server\MSSQL*11**.<インスタンス名>\MSSQL\LOG*

1. [スタート] - [すべてのプログラム] - [Microsoft SQL Server 2012] - [構成ツール] - [SQL Server 構成マネージャ] を選択し、[SQL Server Configuration Manager] 画面が表示されます。

2. "SQL Server のサービス" - "SQL Server(<該当のインスタンス名>)" - 右クリック - "プロパティ" を選択します。[SQL Server(<該当のインスタンス名>)のプロパティ] 画面が表示されます。
3. [起動時のパラメーター] タブに指定されている文字列をスクロールし、ERRORLOG のパスをクリックします。”起動時のパラメーターの指定(S):” に該当のパスが表示されますので、こちらをコピーし、メモ帳などに貼り付けます。その後、-e 以降から “Log” までをコピーし、エクスプローラで移動します。

. "-e" から始まるパラメータの文字列を確認します。"ERRORLOG" の前までが格納フォルダのパスになります。

例) 以下例の場合

;-eC:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\Log\ERRORLOG

例) 既定のインスタンスの場合

;-eC:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\ERRORLOG  

image

image

SQL Server 2014

SQL Server 2014 のエラーログは、既定では下記フォルダに保存されています。 MSSQL**12**.<インスタンス名> というのがポイントです。

C:\Program Files\Microsoft SQL Server\MSSQL*12**.<インスタンス名>\MSSQL\LOG*

1. [スタート] - [すべてのプログラム] - [Microsoft SQL Server 2014] - [構成ツール] - [SQL Server 構成マネージャ] を選択し、[SQL Server Configuration Manager] 画面が表示されます。

2. "SQL Server のサービス" - "SQL Server(<該当のインスタンス名>)" - 右クリック - "プロパティ" を選択します。[SQL Server(<該当のインスタンス名>)のプロパティ] 画面が表示されます。
3. [起動時のパラメーター] タブに指定されている文字列をスクロールし、ERRORLOG のパスをクリックします。”起動時のパラメーターの指定(S):” に該当のパスが表示されますので、こちらをコピーし、メモ帳などに貼り付けます。その後、-e 以降から “Log” までをコピーし、エクスプローラで移動します。

. "-e" から始まるパラメータの文字列を確認します。"ERRORLOG" の前までが格納フォルダのパスになります。

例) 以下例の場合

;-eC:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014\MSSQL\Log\ERRORLOG

例) 既定のインスタンスの場合

;-eC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Log\ERRORLOG  

image

image

SQL Server エラーログからわかる情報

SQL Server エラーログでエラー以外に確認することができる情報としては、以下のようなものがあります。

・SQL Server のバージョン、エディション、Service Pack、累積アップデートの適用状況
・構成されている OS のバージョン、エディション
・通信プロトコル(TCP/IP、名前付きパイプなど)と待ち受けポート
・認証モードの種類(混合モード、Windows 認証のみなど)
・インスタンスが既定か名前付きか
・待ち受け可能な状況となった時間

例) 認証モード
混合認証モードの場合のログの記録

2012-03-16 15:23:11.51 Server Authentication mode is MIXED.

Windows 認証モードのみの場合のログ

2012-03-16 15:23:22.12 Server Authentication mode is WINDOWS-ONLY.

例) インスタンスの種類
名前付きインスタンスの場合、"Server name is" の後、<Server名> \ <インスタンス名> のように、" \ " が入った形が続きます。
以下の例では、"UIKOUSQLV" の後に、" \ " が続きます。このことから、インスタンスは名前付きであり、インスタンス名 "SQL2008R2" であることがわかります。
なお、SQL Server Express Edition は、既定のインストールでも、名前付きインスタンスになります。(<Server名>\SQLEXPRESS)

2012-03-16 15:23:22.12 spid7s Server name is 'UIKOUSQLV \ SQL2008R2' . This is an informational message only. No user action is required.

既定のインスタンスの場合は、"\" は含まれない形の名前が、"Server name is" に続きます。以下の場合、" \ " が含まれていませんため、インスタンスは既定、すなわち "MSSQLSERVER" であると判断できます。

2012-03-16 15:28:13.52 spid7s Server name is 'UIKOUSQL' . This is an informational message only. No user action is required.

例) 通信プロトコル(TCP/IP、名前付きパイプなど)と待ち受けポート
"Server is listening on" で、エラーログを検索します。

2012-03-16 15:23:23.04 サーバー Server is listening on [ 'any' <ipv6> 1433].
2012-03-16 15:23:23.05 サーバー Server is listening on [ 'any' <ipv4> 1433].
2012-03-16 15:23:23.05 サーバー Server local connection provider is ready to accept connection on [ \\.\pipe\ SQLLocal\MSSQLSERVER ].
2012-03-16 15:23:23.05 サーバー Server named pipe provider is ready to accept connection on [ \\.\pipe\ sql\query ].
2012-03-16 15:23:23.10 サーバー Server is listening on [ ::1 <ipv6> 1434].
2012-03-16 15:23:23.11 サーバー Server is listening on [ 127.0.0.1 <ipv4> 1434].

上記例では、ポート 1433 と、1434 が Listen 状態であること、また “ready to accept connection on ”のつぎに、” \\.\pipe\~” とあるので、名前付きパイプの待ち受けもなされているということが判ります。
次は、"SQL Server is now ready for" でログを確認しますと、接続可能な状態であるかどうか確認できます。
以下の例では、03/16 15:24:12 以降は、接続可能な状態であったと判断できます。

例)
2012-03-16 15:24:12.01 サーバー SQL Server is now ready for client connections. This is an informational message; no user action is required.

イベント ログ

イベント ログは、システムおよびアプリケーション イベント ログを txt 形式で保存していただくことが可能です。
これにより、たとえば SQL Server についてのログを確認したいときに、ログを開くマシンに SQL Server が構成されていなくても、情報を確認することができます。

1. イベントビューアを起動します。

※ Windows Server 2008 以降の場合、管理ツール (コントロール パネルの中に既定ではあります) – イベント ビューアーを起動します。

image

※Windows Server 2003 も同様に、管理ツールからイベント ビューアを起動します。

image

※ 全 Windows OS 共通で、[ファイル名を指定して実行 (Windows キー + R キー)] もしくは、Windows Server 2008 以降のスタートメニューの検索部分で、eventvwr と入力しますと、eventvwr.exe が選択されますので、ここから起動するという方法もあります。

image

2. 左のペインの中から 「アプリケーション」 を選択し、右クリックします。(※Windows Server 2008 以降は、[Windows ログ] の下にあります)
3.「すべてのイベントを名前を付けて保存(E)」(Windows Server 2008 以降)、または 「ログファイルの名前を付けて保存(A)」(Windows Server 2003) を選択します。

※ Windows Server 2003

image

※ Windows Server 2008 以降

image

4. ファイル名に適当な名前を指定します。
5. ファイルの種類に「テキスト(タブ区切り)」を指定して保存します。

※Windows Server 2003
image

6. 同様に 「システム」 を選択し、3. ~ 5. を実行します。

まとめ

・SQL Server エラーログはエラーだけを記録しているのではなく、サーバの構成情報も含まれる
・SQL Server エラーログは各バージョン毎に格納場所が異なるので、確認が必要
・イベント ログはテキストで保存することで SQL Server が存在しない環境においても情報が確認可能になる 

参考情報

SQL Server エラー ログの表示
SQL Server 2005
https://msdn.microsoft.com/ja-jp/library/ms187885(v=sql.90).aspx
SQL Server 2008
https://msdn.microsoft.com/ja-jp/library/ms187885(v=sql.100).aspx
SQL Server 2008 R2
https://msdn.microsoft.com/ja-jp/library/ms187885.aspx
SQL Server 2012
https://technet.microsoft.com/ja-jp/library/ms187109.aspx
SQL Server 2014
https://msdn.microsoft.com/ja-jp/library/ms187109(v=sql.120).aspx

お問い合わせの際は、SQL Server マシン上でイベント ログも保存してご提供ください。また、その際は問題の発生時刻が確認できている場合は、時間も添えていただくことでピンポイントで状況を把握することができます。

★ SQL Server トラブルシューティング 6 回シリーズのご案内 ★

本記事は、第 1 回目となります。他記事は以下をご参照ください。 https://blogs.msdn.com/b/jpsql/archive/2012/03/30/sql-server-6.aspx

第1回 SQL Server のログ、イベントログの確認方法 (03/30 UP、本記事) 第2回 パフォーマンスログの採取方法 (04/20 UP) 第3回 パフォーマンスログの確認方法 (05/07 UP) 第4回 サーバートレースの解析方法 1 (05/18 UP) 第5回 サーバートレースの解析方法 2 (02/18 UP) 第6回 ブロッキング情報の確認方法 (07/24 UP)