Sql-Server

Sysadmin的登錄報告

  • November 22, 2018

我們要求只為系統管理員提供來自 SQL Server 的登錄報告 - 這將具有登錄日期和時間,當任何人登錄到具有系統管理員權限的 SQL Server 時。

無論如何,我們是否可以從 SQL 伺服器獲取報告,其中包含只有數據庫伺服器上的系統管理員使用者的登錄詳細資訊。

我想,在安全選項卡中,我們可以同時啟用成功和失敗登錄,但是啟用它會在伺服器上增加很多成本,目前我們只為失敗的登錄啟用了它。而且我不知道是否有辦法只為系統管理員啟用成功登錄,而不是為其他人啟用。

任何幫助,將不勝感激。

我可能會查看 LOGON 觸發器並結合檢查 sysadmin 的登錄 如果登錄使用者是 sysadmin,請記錄它;否則跳過

顯然,監控性能影響

sql server - 如何為客戶端審計創建登錄和註銷觸發器?- 數據庫管理員堆棧交換

CREATE TRIGGER MyLogonTrigger ON ALL SERVER FOR LOGON
AS 
BEGIN
   IF SUSER_SNAME() = 'SomeUser'
   INSERT INTO Test.dbo.LogonAudit (UserName, LogonDate, spid) 
           VALUES (SUSER_SNAME(), GETDATE(), @@SPID);
END;

檢查系統管理員的程式碼

SELECT name,type_desc,is_disabled, create_date
FROM master.sys.server_principals
WHERE IS_SRVROLEMEMBER ('sysadmin',name) = 1
ORDER BY name

大聲笑,我剛剛發現我有這樣的腳本,見下文

CREATE TRIGGER trigLogon_CheckForSysAdmin
           ON ALL SERVER
           FOR LOGON
           AS
   BEGIN
   IF EXISTS (
       SELECT sp.principal_id
           FROM sys.server_role_members srm
                   JOIN sys.server_principals sp
                   ON srm.member_principal_id = sp.principal_id
           WHERE role_principal_id = (
           SELECT principal_id 
               FROM sys.server_principals 
               WHERE NAME = 'sysadmin')
               AND ORIGINAL_LOGIN() = sp.NAME)
       BEGIN
       INSERT INTO DBAWork.dbo.AuditSysAdminLogin
           (EventTime, ServerLogin)
               VALUES
           (GETDATE(), ORIGINAL_LOGIN())
       END;
   END;
GO 

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