恢复成功的 SQL Database 数据库连接,以及连接失败、死锁和中止事件。 您可以使用此信息跟踪与 SQL Database 相关的数据库活动或排除其故障。
适用范围:Azure SQL Database. |
sys.event_log 视图包含以下各列。
列名 |
数据类型 |
说明 |
|---|---|---|
database_name |
sysname |
数据库的名称。 如果连接失败,并且用户未指定数据库名称,则此列为空白。 |
start_time |
datetime2 |
聚合间隔开始的 UTC 日期和时间。 对于聚合事件,时间始终为 5 分钟的倍数。 例如: '2011-09-28 16:00:00' |
end_time |
datetime2 |
聚合间隔结束的 UTC 日期和时间。 对于聚合事件,End_time 始终比同一行中对应的 start_time 正好晚 5 分钟。 对于未聚合的事件,start_time 和 end_time 等于事件的实际 UTC 日期和时间。 |
event_category |
nvarchar(64) |
生成此事件的高级组件。 有关可能值的列表,请参阅 Event Types。 |
event_type |
nvarchar(64) |
事件的类型。 有关可能值的列表,请参阅 Event Types。 |
event_subtype |
int |
发生的事件的子类型。 有关可能值的列表,请参阅 Event Types。 |
event_subtype_desc |
nvarchar(64) |
事件子类型的说明。 有关可能值的列表,请参阅 Event Types。 |
severity |
int |
错误的严重性。 可能的值有: 0 = 信息 |
event_count |
int |
此事件在指定的时间间隔内针对指定的数据库发生的次数(start_time 和 end_time)。 |
description |
nvarchar(max) |
对事件的详细说明。 有关可能值的列表,请参阅 Event Types。 |
additional_data |
XML |
对于 Deadlock 事件,此列包含死锁图。 对于其他事件类型,该列为 NULL。 |
事件类型
此视图中的每行所记录的事件由类别 (event_category)、事件类型 (event_type) 和子类型 (event_subtype) 标识。 下表列出了此视图中收集的事件类型。
对于 connectivity 类别中的事件,sys.database_connection_stats 视图中提供了摘要信息。
备注
此视图不包括所有可能发生的 SQL Database 数据库事件,而仅限此处列出的事件。SQL Database 的未来版本中可能会添加其他类别、事件类型和子类型。
event_category |
event_type |
event_subtype |
event_subtype_desc |
severity |
description |
|---|---|---|---|---|---|
connectivity |
connection_successful |
0 |
connection_successful |
0 |
已成功连接到数据库。 |
connectivity |
connection_failed |
0 |
invalid_login_name |
2 |
登录名在此版本的 SQL Server 中无效。 |
connectivity |
connection_failed |
1 |
windows_auth_not_supported |
2 |
在此版本的 SQL Server 中不支持 Windows 登录名。 |
connectivity |
connection_failed |
2 |
attach_db_not_supported |
2 |
用户已请求附加不受支持的数据库文件。 |
connectivity |
connection_failed |
3 |
change_password_not_supported |
2 |
用户已请求更改不受支持的用户登录密码。 |
connectivity |
connection_failed |
4 |
login_failed_for_user |
2 |
用户登录失败。 |
connectivity |
connection_failed |
5 |
login_disabled |
2 |
登录名已禁用。 |
connectivity |
connection_failed |
6 |
failed_to_open_db |
2 |
无法打开数据库。 原因可能是该数据库不存在,或缺少身份验证而无法打开数据库。 |
connectivity |
connection_failed |
7 |
blocked_by_firewall |
2 |
不允许客户端 IP 地址访问该服务器。 |
connectivity |
connection_failed |
8 |
client_close |
2 |
在建立连接时,客户端可能已超时。 尝试增加连接超时值。 |
connectivity |
connection_failed |
9 |
reconfiguration |
2 |
连接失败,因为数据库目前正在经历重新配置。 |
connectivity |
connection_terminated |
0 |
idle_connection_timeout |
2 |
连接闲置的时间超过了系统定义的阈值。 |
connectivity |
connection_terminated |
1 |
reconfiguration |
2 |
由于数据库重新配置,该会话已终止。 |
connectivity |
throttling |
<原因代码> |
reason_code |
2 |
请求受到限制。 限制原因代码:<原因代码>。 有关详细信息,请参阅引擎限制。 |
connectivity |
throttling_long_transaction |
40549 |
long_transaction |
2 |
由于您有长时间运行的事务,已终止会话。 请尝试缩短您的事务的运行时间。 有关详细信息,请参阅资源限制。 |
connectivity |
throttling_long_transaction |
40550 |
excessive_lock_usage |
2 |
由于会话获取的锁过多,已终止该会话。 请尝试在单个事务中读取或修改更少的行。 有关详细信息,请参阅资源限制。 |
connectivity |
throttling_long_transaction |
40551 |
excessive_tempdb_usage |
2 |
由于过度使用 TEMPDB,已终止该会话。 请尝试修改您的查询以减少使用临时表空间。 有关详细信息,请参阅资源限制。 |
connectivity |
throttling_long_transaction |
40552 |
excessive_log_space_usage |
2 |
由于过度使用事务日志空间,已终止该会话。 请尝试在单个事务中修改更少的行。 有关详细信息,请参阅资源限制。 |
connectivity |
throttling_long_transaction |
40553 |
excessive_memory_usage |
2 |
由于过度使用内存,已终止该会话。 请尝试修改您的查询以处理更少的行。 有关详细信息,请参阅资源限制。 |
engine |
deadlock |
0 |
deadlock |
2 |
发生死锁。 |
权限
具有访问 master 数据库的权限的用户对此视图具有只读权限。
示例
以下查询将返回在 9/25/2011 与 9/28/2011 (UTC) 之间发生的所有事件。 默认情况下,查询结果按 start_time(升序)排序。
select * from sys.event_log where start_time>='2011-09-25:12:00:00' and end_time<='2011-09-28 12:00:00';
以下查询返回 Database1 数据库的所有死锁事件。
select * from sys.event_log where event_type='deadlock' and database_name='Database1';
以下事件对在 9/25/2011 (UTC) 的 10:00 与 11:00 之间发生的 SQL 工作线程事件返回硬中止。
select * from sys.event_log where event_type='throttling' and event_subtype=4194307 and start_time>='2011-09-25 10:00:00' and end_time<='2011-09-25 11:00:00';
注释
事件聚合
在 5 分钟的间隔内收集和聚合此视图的事件信息。 event_count 列表示特定 event_type 和 event_subtype 在给定的时间间隔内针对特定数据库发生的次数。
备注
某些事件(如死锁)不会聚集。对于这些事件,event_count 将为 1,start_time 和 end_time 将等于发生事件时的实际 UTC 日期和时间。
例如,如果用户在 2/5/2012 (UTC) 的 11:00 到 11:05 之间由于登录名无效而七次均无法连接到数据库 Database1,则此信息将出现在此视图的单一行内:
database_name |
start_time |
end_time |
event_category |
event_type |
event_subtype |
event_subtype_desc |
severity |
event_count |
description |
additional_data |
|---|---|---|---|---|---|---|---|---|---|---|
Database1 |
2012-02-05 11:00:00 |
2012-02-05 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 之前,则聚合间隔中将包含该事件。 例如,恰好在 2012-10-30 19:25:00.0000000 发生的事件将只包含在如下所示的第二个间隔内:
start_time end_time
2012-10-30 19:20:00.0000000 2012-10-30 19:25:00.0000000
2012-10-30 19:25:00.0000000 2012-10-30 19:30:00.0000000
数据更新
此视图中的数据会随时间推移而累积。 通常,数据将在聚合间隔开始后的一小时内累积,但可能需要多达 24 小时才能使所有数据都出现在此视图中。 在此期间,可能会定期更新单一行中的信息。
数据保持期
视图中的数据将保留最多 30 天或可能更少时间,具体取决于逻辑服务器中的数据库数量和每个数据库生成的唯一事件数量。 要将此信息保留更长期间,请将数据复制到单独的数据库。 在对视图进行初始复制后,视图中的行可能会随数据的累积而进行更新。 为了使数据副本保持最新状态,请定期对表中的行进行扫描,以查看现有行的事件计数的增加并确定新行(您可以通过使用开始时间和结束时间来确定唯一的行),然后使用这些更改更新您的数据副本。
未包括的错误
此视图可能并未包含所有连接和错误信息:
此视图并未包括所有可能发生的 SQL Database 数据库错误,只包含在本主题的 Event Types 中指定的数据库错误。
如果 SQL Database 数据中心内发生计算机故障,则事件表中可能缺少逻辑服务器的少量数据。
如果通过 DoSGuard 拦截了 IP 地址,则无法收集来自该 IP 地址的连接尝试事件,这些事件不会出现在此视图中。