在吸收了 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 所说一样在
记录用户操作日志的解决方案
最新推荐文章于 2022-09-08 11:52:19 发布