sys.event_log (Azure SQL Database)
適用対象: Azure SQL Database
成功した Azure SQL Database データベース接続と接続エラーを返します。 この情報を使用して、データベースの利用状況の追跡またはトラブルシューティングを行うことができます。
注意事項
大量のデータベースやログインの数が多い サーバー sys.event_logクエリを実行すると、マスター データベースでリソースの使用率が高くなり、ログインエラーが発生する可能性があります。 この問題の影響を軽減するには、sys.event_logのクエリを制限します。
sys.event_log
ビューには、次の列が含まれています。
列名 | データ型 | 説明 |
---|---|---|
database_name | sysname | データベース名。 接続が失敗し、ユーザーがデータベース名を指定していない場合、この列は空白です。 |
start_time | datetime2 | 集計間隔の開始の UTC 日時。 集計イベントの場合、時間は常に 5 分の倍数です。 次に例を示します。 '2022-03-30 16:00:00' '2022-03-30 16:05:00' '2022-03-30 16:10:00' |
end_time | datetime2 | 集計間隔の終了の UTC 日時。 集計イベントの場合、 End_time は常に、同じ行の対応する start_time より 5 分遅れます。 集計されていないイベントの場合、 start_time と end_time イベントの実際の UTC 日時と等しくなります。 |
event_category | nvarchar(64) | このイベントを生成した上位レベルのコンポーネント。 使用可能な値の一覧については、「 Event 型 」を参照してください。 |
event_type | nvarchar(64) | イベントのタイプ。 使用可能な値の一覧については、「 Event 型 」を参照してください。 |
event_subtype | int | 発生したイベントのサブタイプ。 使用可能な値の一覧については、「 Event 型 」を参照してください。 |
event_subtype_desc | nvarchar(64) | イベントのサブタイプの説明。 使用可能な値の一覧については、「 Event 型 」を参照してください。 |
severity | int | エラーの重大度。 次のいずれかの値になります。 0 = 情報 = 警告 = エラー |
event_count | int | 指定した時間間隔 (start_time および end_time) 内で、指定したデータベースに対してこのイベントが発生した回数。 |
説明 | nvarchar(max) | イベントの詳細な説明。 使用可能な値の一覧については、「 Event 型 」を参照してください。 |
additional_data | XML | この列は使用されず、下位互換性のために保持されます。 |
イベントの種類
このビューの各行によって記録されるイベントは、カテゴリ (event_category)、イベントの種類 (event_type)、サブタイプ (event_subtype) によって識別されます。 次の表に、このビューで収集されるイベントの種類を示します。
connectivity カテゴリのイベントの場合、概要情報は sys.database_connection_stats ビューで使用できます。
Note
このビューには、発生する可能性のあるすべての SQL Database データベース イベントが含まれているわけではありません。ここに記載されているイベントのみが含まれます。 SQL Database の今後のリリースでは、カテゴリ、イベントの種類、サブタイプが追加される可能性があります。
event_category | event_type | event_subtype | event_subtype_desc | severity | 説明 |
---|---|---|---|---|---|
接続 | connection_successful | 0 | connection_successful | 0 | データベースに正常に接続されました。 |
接続 | connection_failed | 0 | invalid_login_name | 2 | ログイン名がこのバージョンの SQL Server では無効です。 |
接続 | connection_failed | 1 | windows_auth_not_supported | 2 | Windows ログインは、このバージョンの SQL Server ではサポートされていません。 |
接続 | connection_failed | 2 | attach_db_not_supported | 2 | サポートされていないデータベース ファイルのアタッチをユーザーが要求しました。 |
接続 | connection_failed | 3 | change_password_not_supported | 2 | ユーザーが、サポートされていないユーザー ログインのパスワードの変更を要求しました。 |
接続 | connection_failed | 4 | login_failed_for_user | 2 | ユーザー はログインできませんでした。 |
接続 | connection_failed | 5 | login_disabled | 2 | ログインが無効になりました。 |
接続 | connection_failed | 7 | blocked_by_firewall | 2 | クライアントの IP アドレスからサーバーにアクセスすることが許可されていません。 |
アクセス許可
Azure SQL Database のサーバー上の master データベースにアクセスするアクセス許可を持つユーザーは、このビューへの読み取り専用アクセス権を持っています。
解説
イベントの集計
このビューのイベント情報は、5 分未満の間隔で収集および集計されます。 event_count列は、特定のデータベースに対して特定のevent_typeおよびevent_subtypeが特定の時間間隔内で発生した回数を表します。
Note
デッドロックなどの一部のイベントは集計されません。 これらのイベントの場合、 event_count は 1、 start_time 、 end_time はイベントが発生した実際の UTC 日時と等しくなります。
たとえば、2022 年 3 月 30 日 (UTC) の 11:00 から 11:05 の間で 7 回、ログイン名が無効なため、ユーザーがデータベース Database1 に接続できない場合、この情報は次のビューの 1 行で使用できます。
database_name | start_time | end_time | event_category | event_type | event_subtype | event_subtype_desc | severity | event_count | 説明 | additional_data |
---|---|---|---|---|---|---|---|---|---|---|
Database1 |
2022-03-30 11:00:00 |
2022-03-30 11:05:00 |
connectivity |
connection_failed |
4 |
login_failed_for_user |
2 |
7 |
Login failed for user. |
NULL |
間隔のstart_timeとend_time
イベントは、イベントが on または after start_time および before end_time に発生した場合に集計間隔に含まれます。 たとえば、2022-03-30 19:25:00.0000000
に発生したイベントは、下に示す例では 2 つ目の間隔にのみ含まれます。
start_time end_time
2022-03-30 19:20:00.0000000 2022-03-30 19:25:00.0000000
2022-03-30 19:25:00.0000000 2022-03-30 19:30:00.0000000
データ更新
このビューのデータは、時間の経過と同時に蓄積されます。 通常、データは集計間隔の開始から 1 時間以内に累積されますが、すべてのデータがビューに表示されるまで最大で 24 時間かかる場合があります。 その間に、1 つの行内の情報が定期的に更新されることがあります。
データの保持
このビューのデータは、最大 30 日間保持されるか、データベースの数と各データベースが生成する一意のイベントの数に応じて少なくなる可能性があります。 この情報をより長期間にわたって保持するには、データを別のデータベースにコピーします。 ビューの最初のコピーを行った後に、そのビューの行がデータの累積に伴って更新されることがあります。 データのコピーを最新の状態に保つには、定期的に行のテーブル スキャンを行うことにより、既存の行のイベント数の増加を検出し、新しい行を特定して (開始時刻と終了時刻を使用して一意の行を識別できます)、これらの更新内容をデータのコピーに反映させます。
エラーは含まれません
このビューには、すべての接続とエラー情報が含まれていない場合があります。
- このビューには、発生する可能性のあるすべての SQL Database データベース エラーは含まれません。この記事の「 Event の種類 で指定されたエラーのみが表示されます。
- SQL Database データセンター内でマシンの障害が発生した場合、イベント テーブルに少量のデータが不足している可能性があります。
- DoSGuard によって IP アドレスがブロックされている場合、その IP アドレスからの接続試行イベントを収集できず、このビューには表示されません。
例
Azure SQL Database のサーバー上の master データベースに接続して次の Transact-SQL クエリを実行します。
sys.event_log ビューのクエリを実行する
次のクエリは、2022 年 3 月 25 日の正午から 2022 年 3 月 30 日 (UTC) の正午までの間に発生したすべてのイベントを返します。 既定では、クエリ結果は start_time (昇順) で並べ替えられます。
SELECT database_name, start_time, end_time, event_category,
event_type, event_subtype, event_subtype_desc, severity,
event_count, description
FROM sys.event_log
WHERE start_time >= '2022-03-25 12:00:00'
AND end_time <= '2022-03-30 12:00:00';
ユーザーのログインエラーを照会する
次のクエリは、2022 年 3 月 25 日 (UTC) の 10:00 から 11:00 の間に発生したユーザーのログインに失敗した接続エラーを返します。
SELECT database_name, start_time, end_time, event_category,
event_type, event_subtype, event_subtype_desc, severity,
event_count, description
FROM sys.event_log
WHERE event_type = 'connection_failed'
AND event_subtype = 4
AND start_time >= '2022-03-25 10:00:00'
AND end_time <= '2022-03-25 11:00:00';
次のステップ
Azure SQL Database の詳細については、次の記事を参照してください。