以前写的触发器,主要用来发现一些很难找的程序错误的,近期突然发现,免得再次找不到,简单加了些注释贴到这里。
--
跟踪一个表的所有操作的触发器
create
trigger
tr_test
on
test
for
insert
,
update
,
delete
as
set
nocount
on

--
用临时表保存exec('DBCC INPUTBUFFER...')的返回值
create
table
#t(EventType
varchar
(
50
),Parameters
int
,EventInfo
varchar
(
6000
))
--
DBCC INPUTBUFFER需要参数spid
declare
@spid
varchar
(
20
)
set
@spid
=
cast
(
@@spid
as
varchar
)
insert
#t
exec
(
'
DBCC INPUTBUFFER (
'
+
@spid
+
'
)
'
)
insert
Test_Log(AppName,Sql,UserName,HostName,Time)
select
App_Name
(),
--
应用程序名,这个比较有用,可以发现是否有用查询分析器修改数据的
EventInfo,
--
SQL语句,主要用来发现程序错误
SYSTEM_USER
,
--
用户名
Host_name
(),
--
主机名
getdate
()
--
发生时间
from
#t

go
