标签归档:触发器

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

mssql sqlserver 根据”触发器名称”获取”触发器内容”的方法分享


摘要:
下文讲述使用sql脚本的方式 获取”触发器内容”的方法分享,如下所示:
实验环境:sql server 2008 R2


例:
获取触发器名称为”tr_maomao365″的触发器内容,如下所示:

       -----使用sp_helptext系统存储过程获取触发器中的内容
      sp_helptext 'tr_maomao365'   

mssql sqlserver 查询一张数据表下触发器信息


摘要:
下文讲述使用sql脚本的方式查询一张数据表下的触发器信息,如下所示:
实验环境:sql server 2008 R2


例:
获取数据表”maomao365″下的触发器信息,如下所示:

   SELECT
object_name(a.parent_obj) as [表]
,a.name as [触发器]
,(case when b.is_disabled=0 then ‘使用中’ else ‘停用’ end) as [触发器状态]
,b.create_date as [写入日期]
,b.modify_date as [最后修改日期]
,c.text as [触发器内容]
FROM sysobjects a
INNER JOIN sys.triggers b
ON b.object_id=a.id
INNER JOIN syscomments c
ON c.id=a.id
WHERE a.xtype=’tr’ ——tr代表类型 触发器 
   and object_name(a.parent_obj) ='maomao365'      ----maomao365数据表名称