对了,我后端数据库服务器采用的是:SQL Server

解决方案 »

  1.   

    查sql server的当前活动里边,有很多的用户被堵塞了,不知道应该用什么办法去解决
      

  2.   

    你是不是动态设置TADOStoredProc控件时,没个用户加入都加一次,
    而又没释放啊,
      

  3.   

    TADOStoredProc我是动态创建的,而且也都释放了,我总觉得是我ADOConnection控件的属性设置,就是Connectoptions=coConnectUnspecified
    CursorOption=clUserServer
    isolationLevel=iCursorStability
    Mode=cmReadWrite
    Provider=SQLOLEDB不知道这样的设置是不是对多用户同时访问数据库是有很多的其他影响呢?
      

  4.   

    你是如何释放TADOstoreproc的?我觉得就是你释放的问题。
      

  5.   

    对了,你用的DELPHI是多少版本的?如果是D6的话,有没有UPDATA to SP2?
      

  6.   

    呵呵,不好意思我没有看清楚你用的是CB5,你试试在每一个过程运行完后就用freeandnil(adostorporc)试试,freeandnil是在DELPHI里的一个函数,你看看CB5里有没有
      

  7.   

    同意 david_wwb(时代超人)
    好象有个线程共享的设置 
     
     
      

  8.   

    我的释放应该是正确执行的而且通过捕捉错误还可以得到ADOStoredProc.execute()时发生错误,确定的是参数赋值一定正确,而且拿出来执行可以成功的,但是不知道为什么启动多线成的时候会发生错误,可是我的也是动态创建和删除的呀我对线程的设置不是很了解,所以请大家帮忙看看那里的设置不对,哪里可能出现问题
      

  9.   

    我在try中可以捕捉到错误,是因为在执行存储过程的时候出错了的
    可是如果把所付的参数重新单独的拿出来执行这个存储过程,是不出错的!真的搞不懂多用户的时候怎么这么麻烦,因为我是刚刚涉及,所以对于线程的设置很模糊,所以要大家帮忙,看看需要什么设置,或者有什么不对的
      

  10.   

    我的存储过程中有事务处理的我的感觉好像是AdoConntection的设置可能有问题,但是不知道是哪个属性的设置,而且调试起来很麻烦,单个用户不会出错,推倒服务器上,就有阻塞的现象发生了
    存储过程不是很复杂,只是对一个表进行了更新CREATE       PROCEDURE UserVerify
    @ihdd   int ,
    @ihddid  int ,
    @result    int output,
    @enable int output,
    @expdate varchar(10) output
    AS
    begin 
        declare @ifree int
        declare @dexpdate datetime
          declare @s1 varchar(4)
          declare @s2 varchar(2) 
          declare @s3 varchar(2)         begin tran
            select  @ifree=ssfree ,@dexpdate=ssexpdate,@enable=ssenable  from ss_user where  sshdd=@ihdd and  sshddid=@ihddid
            if  (@@rowcount=0)
            begin
                   select @result=1
                   rollback tran
                   return
            end 
            else
            begin
                   if (@iFree>0  or @iFree=9999)
                   begin
                           if(@dexpdate>=getdate() )
                           begin
                                if (  @iFree!=9999)
                                   update ss_user set  ssfree=ssfree-1,ssverifydate=getdate(),ssverifynum=ssverifynum+1 where  sshdd=@ihdd and  sshddid=@ihddid
                               else
                                   update ss_user set  ssverifydate=getdate(),ssverifynum=ssverifynum+1where  sshdd=@ihdd and  sshddid=@ihddid
                         end
                         else
                         begin
                             select @result=2
                             rollback tran
                              return
                        end
                   end
                   else
                   begin
                      select @result=2
                      rollback tran
                      return
                 end
             end
          commit tran
          select @result=0      select @s1=datepart(yyyy,@dexpdate)
          select @s2=datepart(mm,@dexpdate)
          select @s3=datepart(dd,@dexpdate)
         if(@s2<=9)
              select @s2='0'+ convert(varchar(1),@s2)
          if(@s3<=9)
              select @s3='0'+ convert(varchar(1),@s3)      select @expdate=@s1  +'-'+@s2+'-'+@s3end
    GO