共用方式為


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_timeend_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_timeend_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 中邏輯伺服器上的 master 資料庫的使用者 SQL 資料庫 具有此檢視的唯讀存取權。

備註

事件彙總

此檢視的事件資訊會在 5 分鐘間隔內收集並匯總。 event_count數據行代表特定資料庫在特定時間間隔內發生特定event_typeevent_subtype的次數。

注意

不會匯總某些事件,例如死結。 針對這些事件,event_count會是 1,start_timeend_time等於事件發生時的實際 UTC 日期和時間。

例如,如果使用者無法連線到資料庫 Database1,因為登入名稱無效,在 2022/30/30 的 11:00 到 11:05 之間有 7 次,這項資訊可在此檢視的單一數據列中取得:

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 之間發生的使用者,傳回失敗的連線失敗。

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 資料庫: