sys.event_log (Azure SQL Database)
适用于:Azure SQL 数据库
返回成功Azure SQL数据库连接和连接失败。 可以使用此信息来跟踪数据库活动或对其进行故障排除。
注意
对于具有大量数据库和/或大量登录名的 逻辑服务器 ,查询sys.event_log可能会导致 master 数据库中的资源使用率过高,从而导致登录失败。 若要减少此问题的影响,请限制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_type | nvarchar(64) | 事件的类型。 有关可能值的列表,请参阅 事件类型 。 |
event_subtype | int | 发生的事件的子类型。 有关可能值的列表,请参阅 事件类型 。 |
event_subtype_desc | nvarchar(64) | 事件子类型的说明。 有关可能值的列表,请参阅 事件类型 。 |
severity | int | 错误的严重性。 可能的值为: 0 = 信息 1 = 警告 2 = 错误 |
event_count | int | 指定数据库在指定的时间间隔内发生此事件的次数 (start_time 和 end_time) 。 |
description | nvarchar(max) | 对事件的详细说明。 有关可能值的列表,请参阅 事件类型 。 |
additional_data | XML | 此列未使用,保留此列是为了向后兼容。 |
事件类型
此视图中每一行记录的事件由类别 (event_category ) 、事件类型 (event_type ) 和子类型 (event_subtype) 标识。 下表列出了此视图中收集的事件类型。
对于 连接 类别中的事件,sys.database_connection_stats视图中提供了摘要信息。
注意
此视图不包括可能发生的所有SQL 数据库数据库事件,仅包含此处列出的事件。 将来的 SQL 数据库 版本中可能会添加其他类别、事件类型和子类型。
event_category | event_type | event_subtype | event_subtype_desc | severity | description |
---|---|---|---|---|---|
连接 | connection_successful | 0 | connection_successful | 0 | 已成功连接到数据库。 |
连接 | connection_failed | 0 | invalid_login_name | 2 | 登录名在此版本的 SQL Server 中无效。 |
连接 | connection_failed | 1 | windows_auth_not_supported | 2 | 在此版本的 SQL Server 中不支持 Windows 登录名。 |
连接 | 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 数据库中逻辑服务器上的master 数据库的用户对此视图具有只读访问权限。
备注
事件聚合
在 5 分钟的间隔内收集和聚合此视图的事件信息。 event_count列表示特定数据库在给定时间间隔内发生特定event_type和event_subtype的次数。
注意
某些事件(如死锁)不会聚集。 对于这些事件, event_count 将为 1, start_time 并且 end_time 将等于事件发生时的实际 UTC 日期和时间。
例如,如果用户由于登录名无效而无法连接到数据库 Database1,则 2022 年 3 月 30 日 11:00 到 11:05 之间 7 次 (UTC) ,则此视图中的单个行中提供了此信息:
database_name | start_time | end_time | event_category | event_type | event_subtype | event_subtype_desc | severity | event_count | description | 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
当事件发生在start_time或之后以及该间隔end_time之前,事件包含在聚合间隔中。 例如,恰好在 2022-03-30 19:25:00.0000000
发生的事件将只包含在如下所示的第二个间隔内:
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
数据更新
此视图中的数据会随时间推移而累积。 通常,数据将在聚合间隔开始后的一小时内累积,但可能需要多达 24 小时才能使所有数据都出现在此视图中。 在此期间,可能会定期更新单一行中的信息。
数据保留
此视图中的数据最多保留 30 天,或者保留时间可能更少,具体取决于数据库的数量和每个数据库生成的唯一事件数。 要将此信息保留更长期间,请将数据复制到单独的数据库。 在对视图进行初始复制后,视图中的行可能会随数据的累积而进行更新。 为了使数据副本保持最新状态,请定期对表中的行进行扫描,以查看现有行的事件计数的增加并确定新行(您可以通过使用开始时间和结束时间来确定唯一的行),然后使用这些更改更新您的数据副本。
不包括错误
此视图可能并未包含所有连接和错误信息:
- 此视图不包括可能发生的所有SQL 数据库数据库错误,仅包含本文中的事件类型中指定的错误。
- 如果SQL 数据库数据中心内发生计算机故障,则事件表中可能缺少少量数据。
- 如果通过 DoSGuard 拦截了 IP 地址,则无法收集来自该 IP 地址的连接尝试事件,这些事件不会出现在此视图中。
示例
连接到 Azure SQL 数据库中逻辑服务器上的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 日 10:00 到 11:00 之间的用户登录失败的连接失败, (UTC) 。
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 数据库:
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈