如何在 SQL SERVER 7 中完成下面的事情(50分)

  • 主题发起人 主题发起人 question
  • 开始时间 开始时间
Q

question

Unregistered / Unconfirmed
GUEST, unregistred user!
在 MS Sql Server 7 上建立一个用户信息表表
其中包含名字,口令,和状态等信息,我想在工作
站上登录的时候检测用户输入的用户名是否已经有
人在使用(登录 SQL SERVER 的连接是一个 SQL 中
的帐号),我想给状态这个字段做个标记,可是程序
如果异常退出,那么这个帐号就无法在使用了(未将
该数值改回未使用状态),我该如何及时更新这个字
段的值呢?
Thank you!
 
不好做,建议你用 SERVER SOCKET和 CLIENT SOCKET方式完成
在SERVER端放一个小程序,里面包含SERVER SOCKET
客户端程序里包含CLIENT SOCKET 控件
每隔一定时间由 CLIENT SOCKET 向 SERVER SOCKET 发送固定信息(比如报告
自己的网卡号或机器名)

SERVER SOCKET再一定时间内没有收到CLIENT的消息后,将数据库SERVER里
你的标记更改为 空 即可
 
我目前的程序仅仅有个 Client ,不可能为了这个功能特意去写一个
Server 上的服务,有没有其他的解决方法.
 
没什么好办法,实际上写个SOCKET不复杂,只要定时检测即可,
 
我这有个办法:
利用TDataBase中APPLICATION NAME的参数,DataBase在Open前将用户登陆名传进去,如“应用程序_fx”.
检查口令时,除了看标志位外,还要从sysprocesses系统表中选出program_name字段.
若标志为已登陆,但program_name中并没有该应用程序名,如“应用程序_fx”.则说明
fx已异常退出,使用fx可重新登陆。
 
教你个好办法:
在你的程序中放一个时钟,然后每隔一段时间(你自己定)去更新状态,该字段
记录当前的系统时间。而你的程序在登录时,去比较一下时间是否超过原定的时间。
 
To Fx 你的办法好象有点道理,我打算试验一下.Thank you
to Wuyi 你的方法不好,Delphi 中的时钟不好,如果遇到大量的数据交换
她会不动.Sigh

我目前用的是使用 sp_who 这个系统存储过程,得到登如的 ID 然后和
数据库中的标志比较,方法类似 FX 的.
 
To FX :
Thank you, 我想请问一下, SQL 有什么存储过程可以读出
sysprocesses表中的内容,类似 sp_who 的.
 
to question :
建立一个别名对应于 master 库
select * from dbo.sysprocesses 即可

至于里面的内容,你可以在 SQL EXPLORE 里看到
这是系统表,是隐藏的。 你需要设置SQL EXPLORE的VIEW SYSTEM DATA 选项
 
question:
除了sp_who外,还有sp_who2,是否有其他的存储过程俺也不知道了。
 
多人接受答案了。
 
后退
顶部