如果我删除人事档案表,我想做个触发器,记录下来是谁删除的记录,哪个IP地址或者机器名,怎么做这个触发器

解决方案 »

  1.   

    如果能在计算机数据库外部将这些用户的操作信息记录下来的话,应该就可以在数据库中通过cmd_shell调用计算机系统命令来读取这些信息...
    我的想法!不知道能实现不...等待高人...
      

  2.   


    <table>
    <tr>
    <td>怎么没人回答了?</td>
    </tr>
    </table>
      

  3.   

    try:create trigger mr_tr on 人事档案表
    for delete
    as
    insert 日志表(操作员,客户端机器名,操作日期)
    select loginame,host_name(),getdate()
    from   master..sysprocesses   
    where stmt_end=-1
    go
      

  4.   

    用触发器生成SQL Server2000数据表的操作日志 有时,我们想知道登录到数据库的用户做了什么,于是,记录用户执行的SQL语句就非常有必要,这将是重要的参考依据。我们先建一张日志表(DBLoger)用于保存用户执行的SQL语句:
    有时,我们想知道登录到数据库的用户做了什么,于是,记录用户执行的SQL语句就非常有必要,这将是重要的参考依据。我们先建一张日志表(DBLoger)用于保存用户执行的SQL语句:
     程序代码
    Create TABLE DBLoger(
        LoginName nvarchar(50),
        HostName nvarchar(50),
        EventInfo nvarchar(500),
        Parameters int,
        EventType nvarchar(100)
    )接着再建一个触发器,在用户对表进行增/删/改时触发,将执行的SQL语句记录到日志表中:
     程序代码
    Create TRIGGER Loger ON student
    FOR Insert, Update, Delete 
    AS
        SET NOCOUNT ON
        
        Create TABLE #T(EventType nvarchar(100),Parameters int,EventInfo nvarchar(500))
        Insert #T exec('dbcc inputbuffer(' + @@spid + ')')
        --记录到日志表
        Insert INTO DBLoger(LoginName,HostName,EventInfo,Parameters,EventType) Select suser_sname(),host_name(),EventInfo,Parameters,EventType FROM #T说明:由于dbcc inputbuffer的EventInfo最多只能保存255个字符,所以一旦执行的SQL过长,日志表中将无法看到完整的SQL语句!
     
    本篇文章来源于:开发学院 http://edu.codepub.com   原文链接:http://edu.codepub.com/2009/0728/11404.php