关于删除的触发器,希望能监视出到底是谁,执行了什么语句删除了纪录,送分啦?

sxh401 2003-10-20 11:11:05
在一个表上建一个触发器,然后我希望发生删除操作时,系统显示,哪个用户、执行了哪条语句、删除了什么纪录,请问怎么处理?谢谢!
...全文
54 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yun198183 2003-10-27
  • 打赏
  • 举报
回复

应该弄个日志表
sxh401 2003-10-22
  • 打赏
  • 举报
回复
To cxmcxm(小陈) :
用日志怎么实现?谢谢!
sxh401 2003-10-22
  • 打赏
  • 举报
回复
To LengyuYuan(冷雨)
恩,你的办法我知道,用你的方法也是可行的,可是,数据的丢失怀疑是程序执行的结果,所以我想跟踪一下看看是什么语句导致的数据丢失,用你的方法取出了用户和时间,但是执行删除的语句还是没有取出来
cxmcxm 2003-10-21
  • 打赏
  • 举报
回复
用触发器不行,问题是server不知是哪个用户操作,还是用日志文件
LengyuYuan 2003-10-21
  • 打赏
  • 举报
回复
To sxh401(天涯) :
天涯兄,首先建立YourTableLog,比原來的YourTable多兩個欄位用來記錄登陸帳號和刪除時間,然後運行下面的觸發器,然後你在YourTable中刪除一條紀錄,之後再在YourTableLog中查一下原來的紀錄是否在裡面,我試過,可以成功紀錄刪除者,刪除時間,刪除了那筆記錄



CREATE TRIGGER Log_Table ON dbo.YourTable
FOR DELETE
AS
set nocount on

insert into YourTableLog select * , system_user, getdate() from deleted


Angelnet 2003-10-21
  • 打赏
  • 举报
回复
关注
sxh401 2003-10-21
  • 打赏
  • 举报
回复
可是我不知道是什么时候数据丢失了,我需要找到是什么时候,执行了什么操作,致使数据丢失,我在前台怎么跟踪?
sdhdy 2003-10-20
  • 打赏
  • 举报
回复
用触发器不可行
--你怎么在触发器里获得哪个用户?执行了哪条语句?删除了什么纪录?
而在前台就比较好判断了
sxh401 2003-10-20
  • 打赏
  • 举报
回复
那用什么函数取之行的语句?
LengyuYuan 2003-10-20
  • 打赏
  • 举报
回复
建立Log_Table,在原來的表上在增加兩個欄位DelBy,DelTime
--****************************************************
--監控刪除資料紀錄,刪除者,刪除時間及刪除了那條紀錄
--****************************************************
CREATE TRIGGER Log_Table ON dbo.YourTable
FOR DELETE
AS
set nocount on

insert into Log_Table select * , system_user, getdate() from deleted
yujohny 2003-10-20
  • 打赏
  • 举报
回复
对,最好还是用一个表来保存操作的人、记录等
sdhdy 2003-10-20
  • 打赏
  • 举报
回复
用一个触发器恐怕不行,建议你建一个日志表,
字段
FLogID 日志ID,可以用自增字段
FUserID 操作者ID
FDate 日期
FStatus 执行的语句
FResult 删除了哪些记录
删除的时候,写入这张表,然后从这张表再读数据显示
伍子V5 2003-10-20
  • 打赏
  • 举报
回复
这种功能,应该用报警来做

在联机帮助里查看 sp_addmessage raiserror
txlicenhe 2003-10-20
  • 打赏
  • 举报
回复
1: select top 0 *,space(20) as 用户,getdate() as 时间 into logTable from tablename
2:如下触发器,但不能知道执行哪条语句。
create trigger 名 on tableName
For delete
As
insert logTable select host_name(),getdate(),* from deleted
txlicenhe 2003-10-20
  • 打赏
  • 举报
回复
1: select *,space(20) as 用户,getdate() as 时间 into logTable from tablename
2:如下触发器,但不能知道执行哪条语句。
create trigger 名 on tableName
For delete
As
insert logTable select host_name(),getdate(),* from deleted
qdubit 2003-10-20
  • 打赏
  • 举报
回复
关注!

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧