http://expert.csdn.net/Expert/topic/1499/1499340.xml?temp=.1671869

解决方案 »

  1.   

    加個標志欄位吧。(flag bit) 
    登錄時檢查該欄位就ok了
      

  2.   

    更為完善的做法,可以再加上ProcID,LoginTime,HostName等欄位。
    登錄時一併把這些資料記錄進去。
    應用程式退出時把這些資料清除。
    趟若是程式異常或者是掉電等問題發生時,可以借助HostName欄位來判斷下次登錄是否允許。
    (你的程式應該控製在同一台工作站上不能同時執行兩支)if (flag=1 AND HostName='本机') or flag=0 
    {
        /*可以登錄,flag=1可能是由於上次程式異常未及複原)*/
    }
    else
    {  /拒決*/
     }   
      

  3.   

    to:linghuchonglzq2000(有钱真好) 
    如果能够在发生异常的时候写入表的某个标志位的话 那问题就解决了 在web编程里面可以借助application 和session变量解决 在三层里面如果无法在异常之后改变标志位的话 只能通知管理员了!
      

  4.   

    不能说是三层的错,你可以实时的监测同一个账号是否激活。
    比如kkk操作表的时候 引发你一个存贮过程 判断是否有两个用户以上同时在线 如果有的话,通知用户,一段时间以后引发触发器,将最后登陆的删除。这个方法肯定不成熟,可以进一步完善。可是这条路本来就错了!而且
    有点得不偿失阿
      

  5.   

    sQL Server的sysprocesses中記錄的是當前的所有連接資訊,client異常退出的情況可以考慮借助這個 table來判斷是否允許登錄。sysprocesses有Hostname及program_name欄位,若是當前client斷掉後,user到其它電腦上去登錄,那麼只須判斷tblUser中記錄的HostName及program_name在sysprocesses中是否存在。
    若不存在,表示說那台client已當掉,可以登入。
      

  6.   

    本来就不是个很容易解决的问题
    我们一般用N_chow所说的两种方法联合使用就基本解决问题了