--方法2,自己写触发器实现.--记录操作的示例--创建记录的日志表 create table t_log( id int identity(1,1) primary key, 工作站名 nchar(30) not null default host_name(), 操作员 sysname DEFAULT SUSER_SNAME(), 操作时间 datetime default getdate(), 事件类型 nvarchar(30), 参数 int, 执行的语句 nvarchar(255)) go--演示用的数据表 create table test(id int) go--记录操作的触发器 create trigger t_update on test for insert,update,delete as insert t_log(事件类型,参数,执行的语句) exec('dbcc inputbuffer(@@spid)') go--初始化表 insert into test values(1) goupdate test set id=100 go--显示记录情况 select * from t_log go--删除演示环境 drop table t_log,test
开始--程序--MS SQLSERVER
--事件探察器(SQL Profiler)
--文件
--新建--跟踪...
--设置要跟踪的服务器的信息(连接服务器)--确定
--设置跟踪的项目...
--然后数据库的调用情况就会显示出来
create table t_log(
id int identity(1,1) primary key,
工作站名 nchar(30) not null default host_name(),
操作员 sysname DEFAULT SUSER_SNAME(),
操作时间 datetime default getdate(),
事件类型 nvarchar(30),
参数 int,
执行的语句 nvarchar(255))
go--演示用的数据表
create table test(id int)
go--记录操作的触发器
create trigger t_update on test
for insert,update,delete
as
insert t_log(事件类型,参数,执行的语句) exec('dbcc inputbuffer(@@spid)')
go--初始化表
insert into test values(1)
goupdate test set id=100
go--显示记录情况
select * from t_log
go--删除演示环境
drop table t_log,test
我没有细看你的代码。我现在测试过了,差不多已达到我要的效果。---------------------------------------
现在我的代码已写出了,贴出给大家看看:--目的:查看那台机,那个应用程序修改了某些记录。
/****** Object: Trigger sysdba.ChkUpdate Script Date: 2004-6-15 9:27:27 ******/
CREATE TRIGGER [ChkUpdate] ON [sysdba].[indt]
FOR UPDATE
ASdeclare @id int,@id09 varchar(50)
Select @id=id00,@id09=id09 from deletedif @id09='采购管理系统' or @id09 = '劳保用品发放登记'
Begin
Insert into __tLog(fdate,fappName,fid00,fid09,fState,fHostId,fHostName)
values(getdate(),app_name(),@id,@id09,0,Host_id(),Host_name()) Select @id=id00,@id09=id09 from inserted
Insert into __tLog(fdate,fappName,fid00,fid09,fState,fHostId,fHostName)
values(getdate(),app_name(),@id,@id09,1,Host_id(),Host_name())
end
--更新前的值在deleted表中,更新后的新值在 inserted 表中。--谢谢大家。结帐