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


    在吸收了 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 所说一样在

posted @ 2010-02-22 10:17  deepwishly  阅读(978)  评论(0编辑  收藏  举报