sys.event_log (Azure SQL Database)
傳回成功的 Azure SQL Database 資料庫連線和連線失敗。 您可以使用這項資訊追蹤資料庫活動或進行疑難排解。
警告
對於 具有大量資料庫和/或大量登入的邏輯伺服器 ,查詢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 Database 資料庫事件,只有此處所列的事件。 未來 SQL Database 版本中可能會新增其他類別、事件種類和子類型。
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 Database 中邏輯伺服器上的 master 資料庫 的使用者具有此檢視的唯讀存取權。
備註
事件匯總
此檢視的事件資訊會在 5 分鐘間隔內收集並匯總。 event_count 資料行代表特定資料庫在特定時間間隔內發生特定 event_type 和 event_subtype 的次數。
注意
不會匯總某些事件,例如死結。 針對這些事件, event_count 會是 1, start_time 且 end_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 Database 資料庫錯誤,僅包含本文中事件種類 中指定的 錯誤。
- 如果 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 日 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:
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應