你怎么能在begin tran和commit之间终止子线程的?难道你begin tran之后还有什么其他的非数据库操作?

解决方案 »

  1.   

    我的意思是,刚好在begin和commit之间把线程给终止了,那么该事务如何处理,我也知道不应该用TerminateThread来终止线程,但是没办法,如果真的出现这种情况,那数据库库就被阻塞了,系统无法正常运行,我写的是服务程序,所以必须有自动容错功能!!!谢谢指点!!!
      

  2.   

    杀掉
    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  '数据库名'
      

  3.   

    但你写了roll系统应该是会自动回滚的!!!!