记录用户操作日志的解决方案


    在吸收了 zjjqxs、flyingmist 等几位朋友的经验、方法后归纳

总结出如下的方法,可以比较方便、通用的解决这个问题。


    看了 zjjqxs 的发言后突然恍然大悟,利用 Trigger 多简单(竟

然没想到!),但是又存在几个关键问题:后台记录用户名与用户机

的 IP。首先用户名问题好解决,直接使用 SUser_ID() 或 User_Id ()

函数即可。至于记录用户 IP 可以这样。在 Ms Sql Server 中有一个系统

函数 host_name (),该函数将返回本次连接会话的 Client 的机器名,

但是这个函数要返回机器名是有前提。你必须在你的应用程序中编写如下

脚本:

  sqlca.DBParm = "Host='your_host_name'"

这样 host_name() 函数才会返回客户机的计算机名。我们再结合以前在

本栏中讨论的获取本机 IP 的方法将上面一行代码中的 your_host_name

改成本地机的 IP 即可。

    这样我们只需要在有必要纪录用户操作的表上建立触发器,将用户的

操作纪录到另外一个表中即可。而不用再担心存储过程的操作是否会被纪

录。


需要强调:我所说的 SUser_Id ()、User_Id、Host_name () 都是 ms SQL

SERVER 中的函数,在其他 DBMS 中应该有类似的函数。还有 DBParm 参数

根据不同的 DBMS 是不一样的,MS SQL SERVER 接受 

Host='your_host_name' 参数,其他的 DBMS 未必,不过应该是一样的!

还有这种方法要求你的数据库应用程序不能只是用一个 ID 登陆到 server

应该是不同的用户具有不同的登陆 ID,否则只能象 zjjqxs 所说一样在

转载于:https://www.cnblogs.com/deepwishly/archive/2010/02/22/2551292.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值