Sql-Server

在 MSSQL 中記錄安全事件

  • October 15, 2019

我需要記錄管理員更改某人密碼和使用者更改密碼的事件。我怎麼做?我找到了一個基於 Service Broker的不錯的解決方案,但是結果表只包含進行更改的帳戶的登錄名,而不是受影響的帳戶。

誰能告訴我如何改變這部分

INSERT dbo.PasswordChangeLog(LoginName) 
SELECT @message_body.value('(/EVENT_INSTANCE/LoginName)[1]', 'sysname');

這樣我也可以插入密碼更改的對象嗎?當然,我知道我將不得不ALTER dbo.PasswordChangeLog添加一個額外的列。

您可以從 Service Broker 消息中的事件實例中提取更多數據以儲存在表中。具體來說,TargetLoginName應該為您帶回受影響的使用者,這樣的事情應該可以工作:

SELECT @message_body.value('(/EVENT_INSTANCE/LoginName)[1]', 'sysname') AS [ActioningLogin],
 @message_body.value('(/EVENT_INSTANCE/TargetLoginName)[1]', 'sysname') AS [AffectedLogin]

更多資訊在這裡。

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