针对某个特定表的操作日志记录
来源:互联网 发布:淘宝标签怎么设置 编辑:程序博客网 时间:2024/04/30 20:47
CREATE TABLE TBLOG(
ID INT NOT NULL IDENTITY(1,1),
EVTIME DATETIME NOT NULL DEFAULT (GETDATE()), --访问时间
SQL VARCHAR(300), --执行的SQL语句
USERID VARCHAR(128) NOT NULL DEFAULT (SUSER_SNAME()), --连接的时候使用的哪个SQL登陆用户
HOSTNAME VARCHAR(128) NOT NULL DEFAULT (HOST_NAME()), --客户端的机器名
LOGINID VARCHAR(128), --客户端的登陆用户(OS的用户)
APPNAME VARCHAR(128) NOT NULL DEFAULT(APP_NAME()), --是从查询分析器,还是应用程序来执行的
OPTYPE INT, --执行的是INSERT,UPDATE,还是DELETE操作
ROWCNT INT --影响了多少行数据 )
GO
--测试表
CREATE TABLE TBTEST( A INT, B VARCHAR(10) ) GO
--触发器
CREATE TRIGGER TR_TBTEST ON TBTEST FOR INSERT,DELETE,UPDATE
AS
--ROWCNT
DECLARE @ROWS INT SET @ROWS=@@ROWCOUNT
SET NOCOUNT ON
--SQL
DECLARE @T TABLE (EVENTTYPE VARCHAR(20), PARAMETERS INT, EVENTINFO VARCHAR(300))
DECLARE @SPID VARCHAR(20)
SET @SPID=CAST(@@SPID AS VARCHAR) --本次操作的进程号
INSERT @T EXEC('DBCC INPUTBUFFER ('+@SPID+')')
--OPTYPE
DECLARE @OPTYPE INT SET @OPTYPE=2 --UPDATE
IF NOT EXISTS (SELECT 1 FROM INSERTED) SET @OPTYPE=3 --DELETE
IF NOT EXISTS (SELECT 1 FROM DELETED) SET @OPTYPE=1 --INSERT
--进程信息
DECLARE @USERID VARCHAR(128), --连接的时候使用的哪个SQL登陆用户
@HOSTNAME VARCHAR(128), --客户端的机器名
@LOGINID VARCHAR(128), --客户端的登陆用户(OS的用户)
@APPNAME VARCHAR(128) --是从查询分析器,还是应用程序来执行的
SELECT
@USERID =LOGINAME, --连接的时候使用的哪个SQL登陆用户
@HOSTNAME =HOSTNAME, --客户端的机器名
@LOGINID =NT_USERNAME, --客户端的登陆用户(OS的用户)
@APPNAME =PROGRAM_NAME --是从查询分析器,还是应用程序来执行的
FROM
MASTER..SYSPROCESSES
WHERE
SPID=@@SPID
--INSERT
INSERT TBLOG
(SQL , USERID , HOSTNAME , LOGINID , APPNAME , OPTYPE , ROWCNT )
SELECT EVENTINFO, @USERID , @HOSTNAME , @LOGINID , @APPNAME , @OPTYPE , @ROWS FROM @T
GO
- 针对某个特定表的操作日志记录
- 触发器实现记录操作表的日志
- 截取与分析日志文件的特定行数的操作
- 针对表的字段操作
- XmlDocument中针对某Node的特定Attribute的清除操作说明
- 针对特定应用的内存管理技术
- 针对特定对象的内存管理类
- C指针操作——获取字符串中某个特定的字符
- 关于数据记录的操作日志
- 记录用户操作日志的解决方案
- 总结关于操作日志记录的实现
- spring AOP的 操作日志记录功能
- linux操作命令日志 记录的方法
- spring的AOP实现记录操作日志
- linux 下记录ssh的操作日志
- 基于SpringAOP的操作日志记录实现
- SpringMVC 记录用户的操作日志
- log4j针对某个类输出到一个日志做…
- Java正则表达式
- 什么是DEH?为什么要采用DEH控制?
- C++读取mat数据(2)【转帖】
- sql T_sql 利用Case When Then多条件判断SQL 语句
- 做最重要的事
- 针对某个特定表的操作日志记录
- 用Linux的iptables做代理服务器和防火墙配置
- sql char varchar nvarchar 区别
- poj1845 (数论+二分快速取模)
- sql T_sql 在存储过程中使用事务Trans 例子
- ABAP 调用本地程序打开文件
- 新闻集团正式对《泰晤士报》网络版收费
- python下发送邮件给多个收件人
- sql T_sql 利用NOW_NUMBER和CTE 去除表中重复记录行