mssql SQL SERVER使用触发器记录sql账号的登录日志


摘要:
下文讲述使用触发器记录sql账号登录日志的方法分享,如下所示:
实验环境:sql server 2008 R2


例:

---1.建立登陆日志存储表
  CREATE   TABLE tbLoginLog 
   (  
    keyId INT NOT NULL IDENTITY(1, 1) ,  
    write date DATETIME NOT NULL  DEFAULT  get date(),                    ---操作时间  
    USERID VARCHAR(128) NOT NULL DEFAULT   SUSER_SNAME() ,     ---登陆账户     
    HOSTNAME VARCHAR(128) NOT NULL DEFAULT  HOST_NAME() ,     ---客户端的机器名                 
    APPNAME VARCHAR(128)NOT NULL DEFAULT  APP_NAME())            ---应用程序名称                          
   )    

  ---2.建立服务器触发器监控登陆日志,并写入至日志表中
go
 CREATE TRIGGER tr_loginLog
ON ALL SERVER  
FOR LOGON  
AS  
BEGIN  
 
    DECLARE @USERID VARCHAR(128) ,                          
        @HOSTNAME VARCHAR(128) ,                                                
        @APPNAME VARCHAR(128)                         
   
    SELECT  @USERID = LOGINAME ,                        --sql操作时使用的sql账户          
            @HOSTNAME = HOSTNAME ,                       --客户端机器名                            
            @APPNAME = PROGRAM_NAME                    --客户端程序名
    FROM    MASTER..SYSPROCESSES  
    WHERE   SPID = @@SPID  
   
    INSERT  tbLoginLog  
            ( 
              USERID ,  
              HOSTNAME ,   
              APPNAME  
            )  
            VALUES(   
                    @USERID ,  
                    @HOSTNAME ,  
                    @APPNAME)  
 
   
END; 
go


---3.查询日志信息
 select  * from tbLoginLog
go