捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
SQL SERVER 实时的取得在线用户列表
关键字:SQL SERVER 在线用户列表
来 自:原创
平 台:Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:中级 完成时间:2011/12/25
发布者:dcopyboy 发布时间:2012/1/15
编辑器:DELPHI7 语  种:简体中文
分 类:数据库 下载浏览:870/9083
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
SQL SERVER 实时的取得在线用户列表
 
    我们在开发C/S管理系统时往往需要限制用户登陆,如同一用户名只能单点登陆或同一IP只能单点登陆,解决这类问题的关键是获取正真在线用户的列表。由于各种原因(如掉线、网络故障、死机等),实时在线用户列表较难获得,我们不得不定时刷新在线用户数据表,在指定的时间内未刷新数据的用户视为离线用户。这一方式较好的解决了在线用户列表获取问题,但存在2个问题:1、实时性较差,2、需额外的资源进行维护。
    我们知道系统表MASTER..SYSPROCESSES记录了一些用户登陆的信息,表中program_name字段为登陆的管理系统程序名,该字段的内容对绝大多数管理系统无实质性的意义,我

们能否从program_name做文章,较为实时的取得在线用户列表呢?
   答案是可以的,首先我们的管理系统在启动时产生一 GUID,并转换成字符串,假设为:LinkGuid,我们在编写SQL SERVER的链接字串时采用如下格式:
       'Provider=SQLOLEDB.1;Password=' + Password
        + ';Persist Security Info=True;User ID=' + USERNAME + ';Initial Catalog=' + databasename
        + ';Data Source=' + servername +';Application Name='+LinkGuid;
    一旦管理系统登陆成功,我们可以从系统表MASTER..SYSPROCESSES中查到program_name字段为LinkGuid串的登陆链接信息。
    登陆成功后,我们只需将登陆信息插入自己定义的数据表中,假设为:[数据安全],表的字段包括LinkGuid、Username、UserIp等信息,此表只需插入数据,登陆后不再需要维护。那么,我们随时可以采用如下的SQL语句查到当前在线用户列表:
    
  select LinkGuid,Username,UserIp from [数据安全] where exists(select net_address from MASTER..SYSPROCESSES where program_name=LinkGuid)

    经大量测试,上述在线用户列表的实时性大的超过常规需定时刷新的在线用户的列表,实用性较高,数据不需定时维护。


   义乌科创计算机有限公司软件部
   Dcopyboy
   Email:dcopyboy@tom.com
   QQ:445235526
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论5条
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表