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

xiaoyan21 2012-03-31 09:27:53
如何在触发器中获得客户端(winForm)登录后的用户名?

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

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

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

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

谢谢!

...全文
145 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fonnit 2012-04-04
  • 打赏
  • 举报
回复
登录的时候 把登录用户保存到 CONTEXT_INFO 中 SET CONTEXT_INFO @userid
要用的时候从SYS.SYSPROCESSES表里面取出来。
注意类型转换。
ixkixkix 2012-03-31
  • 打赏
  • 举报
回复
最好在客户端登陆时,将登陆信息保存下来,
比如用户张三登陆,登陆的机器名是 wk1,
以后查询时,按机器名去查就行了,解决多用户的问题,

这个主要是用来做日志用的,记录一些日志信息
xiaoyan21 2012-03-31
  • 打赏
  • 举报
回复
多谢楼上两位!
dawugui 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
有没有一种可能就是在sqlserver中创建一个用户级的全局变量?类似于session
[/Quote]
1.你如果只有一个用户操作,可在登录后将用户名写到某个表中,然后每次的数据操作后,从这个表去提取数据.
2.如果你是多用户操作,那么每次操作后,就删除改表的内容,把当前用户插入这个表,触发器从这个表去提取数据.
xiaoyan21 2012-03-31
  • 打赏
  • 举报
回复
有没有一种可能就是在sqlserver中创建一个用户级的全局变量?类似于session
dawugui 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
5楼的方法倒也是可行,只是表太多操作起来有点麻烦。

dawugui(爱新觉罗.毓华) : 肯定还有其它的操作。
[/Quote]我也是那个意思.

表太多也得这么操作.不然每个表写个触发器,同样麻烦.
xiaoyan21 2012-03-31
  • 打赏
  • 举报
回复
5楼的方法倒也是可行,只是表太多操作起来有点麻烦。

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

dawugui 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
后者

问题是,触发器中如何来取得全程变量呢?
[/Quote]
你是只保存这个用户名,还是保存他操作的记录?
如果是保存用户名,貌似用触发器不妥,还不如在操作数据时直接将这个全程变量中的值保存到记录中.
jyh070207 2012-03-31
  • 打赏
  • 举报
回复
将应用程序的用户名设为与sql的用户名.可以用suer_sname()取值,否则,只能通过前台程序给数据用户名,
比如,更新时,update tb set col1 = 'aaa',update_user = '应用程序用户名' where ....
再在触发器的inserted表中取update_user
xiaoyan21 2012-03-31
  • 打赏
  • 举报
回复
后者

问题是,触发器中如何来取得全程变量呢?
dawugui 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
.....
select SUSER_SNAME () 这是数据库的用户名,我想取的是应用程序的用户名
[/Quote]我想问问你说这个用户名和sql server有没有关系?是指的sql server的用户名?还是你自己程序中编写的登录系统的用户名?如果是前者,如上.如果是后者,使用一个全程变量,登录时将用户名写入全程变量中.后面应该知道怎么操作了吧.
xiaoyan21 2012-03-31
  • 打赏
  • 举报
回复
.....
select SUSER_SNAME () 这是数据库的用户名,我想取的是应用程序的用户名
dawugui 2012-03-31
  • 打赏
  • 举报
回复
用:select SUSER_SNAME ()获取用户名,保存到你的操作记录中.

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧