日期:2014-05-17  浏览次数:20394 次

在存储过程中分辨登录进的用户名
想实现的目标:
软件中自由设定某用户只能看到(或者别的操作,添加修改删除等等)
部分客户的资料(可能是原料仓库数据,可能成品仓库数据,可能财务账目,也可能只是仓库中
某一种类的入库数据)。
上面说的部分客户可能是一个也可能是多个,也可能是全部


我的逻辑:
软件通过链接字串连到数据库中,可能通过SA也可能通过别的受限制的用户登录。
在软件某些报表的查询中,调用数据库中的存储过程。
如何做才能在存储过程中辨别出当前链接使用的用户名(数据库用户名)
(或者根据链接能够获取发起链接的电脑的硬件信息也可以)
由此获取当前存储过程在查询获取完全权限的数据后应该再添加什么样的条件限制
来体现出部分数据。


综述:
获取权限设定的两种方式:
1.通过登录数据库的用户名
2.通过电脑硬件(或者说是登录软件的用户名)



请问:
上面两种方式如何实现。
或者有别的更好的方法



------解决方案--------------------
在存储过程中辨别出当前链接使用的用户名(数据库用户名),

 select loginame
  from master.dbo.sysprocesses
  where spid=@@spid

------解决方案--------------------
获取发起链接的电脑的硬件信息..

select hostname,     -- 主机名
       program_name  -- 程序名
 from master.dbo.sysprocesses
 where spid=@@spid

select client_net_address  -- IP地址
 from sys.dm_exec_connections  
 where session_id=@@spid

------解决方案--------------------
http://www.cnblogs.com/worfdream/articles/2986446.html
包含很多信息