Sql-Server

伺服器主體 SID 顯示為 NULL,名稱顯示為空字元串

  • April 4, 2019

在我的 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 地址)?你能問那個人他們在做什麼嗎?

引用自:https://dba.stackexchange.com/questions/233969