CREATE TRIGGER tr_delete ON dbo.yourtablename
FOR DELETE 
AS  INSERT INTO LogTalbe 
  SELECT getdate(),user--得到时间和操作用户
  FROM   deleted ago

解决方案 »

  1.   

    --方法1,用SQL自己提供的工具进行跟踪
    开始--程序--MS SQLSERVER
    --事件探察器(SQL Profiler)
    --文件
    --新建--跟踪...
    --设置要跟踪的服务器的信息(连接服务器)--确定
    --设置跟踪的项目...
    --然后数据库的调用情况就会显示出来
      

  2.   

    --方法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
      

  3.   

    用事件探察器(SQL Profiler)不现实,几百号人一起用。也不知是何时发生的。用happydreamer() 的触发器应该可以实现,但是user只能跟踪是那个SQL用户,不能跟踪是那个应用程序或是那个客户端的IP!!
      

  4.   

    我这的所有客户端都是用同一个SQL用户名的。区别不了。我想跟踪到是那个应用程序或那个客户端的都行。
      

  5.   

    我试过 zjcxc(邹建)的触发器,应该可以解决你的问题了阿
      

  6.   

    to zjcxc(邹建) :
       我没有细看你的代码。我现在测试过了,差不多已达到我要的效果。---------------------------------------
    现在我的代码已写出了,贴出给大家看看:--目的:查看那台机,那个应用程序修改了某些记录。
    /****** 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 表中。--谢谢大家。结帐
      

  7.   

    exec('dbcc inputbuffer(@@spid)') 这语句不错,能跟踪到语句。以后改进。