Sql-Server
伺服器主體 SID 顯示為 NULL,名稱顯示為空字元串
在我的 SQL Server 2016 伺服器中,我設置了一個使用者登錄審核登錄成功和登錄失敗操作。這是腳本。
USE [master] GO CREATE SERVER AUDIT SPECIFICATION [ServerAuditSpecification-20190404-091348] FOR SERVER AUDIT [Audit_SQL_Logins] ADD (FAILED_LOGIN_GROUP), ADD (SUCCESSFUL_LOGIN_GROUP) WITH (STATE = ON) GO USE [master] GO CREATE SERVER AUDIT [Audit_SQL_Logins] TO FILE ( FILEPATH = N'D:\SQL_Logins_Audit\' ,MAXSIZE = 20 MB ,MAX_FILES = 50 ,RESERVE_DISK_SPACE = OFF ) WITH ( QUEUE_DELAY = 1000 ,ON_FAILURE = CONTINUE ,AUDIT_GUID = '77795756-1928-4ce4-85f5-e3ad2e3e22e5' ) WHERE ([server_principal_name]<>'name1' AND [server_principal_name]<>'name2' AND ([server_principal_name]<>'name3' AND [server_principal_name]<>'name4') AND ([server_principal_name]<>'name5' AND [server_principal_name]<>'name6')) ALTER SERVER AUDIT [Audit_SQL_Logins] WITH (STATE = ON) GO
在審核日誌中,
我可以看到很多失敗,伺服器主體 SID 為 NULL,名稱為空字元串。早些時候,當我設置登錄時,我沒有提供任何過濾器,那時審計日誌只顯示成功,沒有失敗。
我不明白這裡發生了什麼失敗,因為日誌顯示 NULL 。
這是螢幕截圖。這是一個生產數據庫伺服器,使用者從 .Net Web 應用程序登錄。我看到消息“建立連接時發生網路錯誤程式碼;連接已關閉。”
我創建了完全相同的審核,但無法重現您描述的問題。當我使用實際不存在的登錄名登錄時:
對於故意錯誤的密碼:
我什至嘗試了一個包含大量前導空格和製表符的名稱,只是為了看看該名稱是否會被截斷並看起來是空白的,但前導空格會被修剪掉。
當然,我希望 SID 在第一種情況下為空,因為您希望為不存在的登錄顯示什麼 SID(因此不能有 SID)?對於第二種情況,可能是因為登錄無法驗證,所以沒有匹配到 SID?
您必須提供更多資訊來確定未填充伺服器主體名稱的原因。應用程序名稱是什麼?聲明說了什麼?什麼是客戶端(語句中的 IP 地址)?你能問那個人他們在做什麼嗎?