如何为客户端审计创建登录和注销触发器?

use*_*748 5 sql-server

我需要一个表来放置客户端而不是系统管理员的登录和注销信息,然后我可以使用日期来统计用户登录/注销率...

谁能给我一个简单的方法来为审计特定客户端而不是系统管理员创建登录和注销触发器,

提前致谢。

Han*_*non 5

您可以IFLOGON触发器添加一个简单的语句,例如:

USE test;
GO
CREATE TABLE LogonAudit
(
    AuditID INT NOT NULL CONSTRAINT PK_LogonAudit_AuditID 
                PRIMARY KEY CLUSTERED IDENTITY(1,1)
    , UserName NVARCHAR(255)
    , LogonDate DATETIME
    , spid INT NOT NULL
);
GO
GRANT INSERT ON Test.dbo.LogonAudit TO public;
GO
CREATE TRIGGER MyLogonTrigger ON ALL SERVER FOR LOGON
AS 
BEGIN
    IF SUSER_SNAME() <> 'sa'
    INSERT INTO Test.dbo.LogonAudit (UserName, LogonDate, spid) 
            VALUES (SUSER_SNAME(), GETDATE(), @@SPID);
END;
GO
ENABLE TRIGGER MyLogonTrigger ON ALL SERVER;
Run Code Online (Sandbox Code Playgroud)

这将仅审核未命名为“sa”的用户的登录 IF SUSER_SNAME() <> 'sa'

或者,如果您只想审核特定用户的登录,您可以编写如下触发器:

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;
Run Code Online (Sandbox Code Playgroud)

这只会在SomeUser登录服务器时进行记录。