日期:2014-05-18  浏览次数:20422 次

如何在触发器中获得客户端(winForm)登录后的用户名
如何在触发器中获得客户端(winForm)登录后的用户名?

实现目的:在触发器中保存用户的操作记录

数据库: sqlserver2008
触发器 在 vs2010 SQLServerProject中创建 (基于clr的触发器)

各位大侠有什么好点的解决方案吗?

(注:SQLServerProject不能引用其它非SQLServerProject的项目)

谢谢!



------解决方案--------------------
用:select SUSER_SNAME ()获取用户名,保存到你的操作记录中.
------解决方案--------------------
将应用程序的用户名设为与sql的用户名.可以用suer_sname()取值,否则,只能通过前台程序给数据用户名,
比如,更新时,update tb set col1 = 'aaa',update_user = '应用程序用户名' where ....
再在触发器的inserted表中取update_user
------解决方案--------------------
探讨
后者

问题是,触发器中如何来取得全程变量呢?

------解决方案--------------------
探讨
5楼的方法倒也是可行,只是表太多操作起来有点麻烦。

dawugui(爱新觉罗.毓华) : 肯定还有其它的操作。

------解决方案--------------------
最好在客户端登陆时,将登陆信息保存下来,
比如用户张三登陆,登陆的机器名是 wk1,
以后查询时,按机器名去查就行了,解决多用户的问题,

这个主要是用来做日志用的,记录一些日志信息
------解决方案--------------------
登录的时候 把登录用户保存到 CONTEXT_INFO 中 SET CONTEXT_INFO @userid
要用的时候从SYS.SYSPROCESSES表里面取出来。
注意类型转换。