是不是仅仅连接,没有任何操作就会sleeping?
只要不死锁,应该问题不大
仅供参考。关注。

解决方案 »

  1.   

    是正常的,当紧紧连接而不作任何操作就会Sleeping,SQL Server允许同时有好几千个连接。你如果用多线程访问数据库那将会用到更多的连接。Sleeping的连接通常是不会对SQL Server性能造成影响的。
      

  2.   

    kill it也有可能是应用程序的问题
      

  3.   

    你首先要CHECK是否是你APPLICATION启动的SESSION,如果不是你就要仔细找原因,如果是你还要检查是否是CONNECTION结束后没有CLOSE.
    你可以结合SP_LOCK和SQL TRACER进行检查。
      

  4.   

    declare @sql varchar(100)while 1=1
    beginselect top 1 @sql = 'kill '+cast(spid as varchar(3))
    from  master..sysprocesses  
    where spid > 50 and spid <> @@spid if @@rowcount = 0
      breakexec(@sql)
    end
      

  5.   

    或:
    create  proc  killspid  (@dbname  varchar(20))  
    as  
    begin  
    declare  @sql  nvarchar(500)  
    declare  @spid  int  
    set  @sql='declare  getspid  cursor  for    
    select  spid  from  sysprocesses  where  dbid=db_id('''+@dbname+''')'  
    exec  (@sql)  
    open  getspid  
    fetch  next  from  getspid  into  @spid  
    while  @@fetch_status  <  >-1  
    begin  
    exec('kill  '+@spid)  
    fetch  next  from  getspid  into  @spid  
    end  
    close  getspid  
    deallocate  getspid  
    end  --用法  
    use  master  
    exec  killspid  '数据库名'
      

  6.   

    我发现当这种Process很多时(6、70个左右),数据库的查询非常的慢(我这时候查看了CUP和内存,CUP使用率才达到20%左右,内存也没有用完),真时搞不明白?望各位大侠们帮忙。谢谢
      

  7.   

    不好意思,上面的CPU打成CUP了,可能是这段时间想RUP想多了,哈哈哈
      

  8.   

    通过sp_who,sp_lock找到这些PROCESS,确认哪些是执行完成没有断开连接或者是事务进程比较大而引起延时\
    那就必须用KILL 杀掉对应的SPID
      

  9.   

    为什么当Process ID 值达到100左右时,数据库的查询就非常慢了呢,是什么原因啊,怎样解决?大家帮帮忙,非常感谢!