Marcelo,
Para saber se existe algum SPID orfão, isto é algum bloqueio de conexão desfeita, verifica-se se algum registro da coluna blk usando SP_WHO tem o valor -2, se tiver DEVE-SE executar o comando KILL com o numero do SPID do cursor.
Exemplo basico...
LOCAL SPID_orfao
SPID_orfao = ""
csql = "EXEC sp_who"
a = SQLEXEC(nID,csql, "CUR_RESULTADO")
IF a < 0
AERROR(ma)
ELSE
SELECT("CUR_RESULTADO")
GO TOP
LOCATE FOR CUR_RESULTADO.blk = "-2"
IF FOUND()
SPID_orfao = CUR_RESULTADO.SPID
ENDIF
IF USED("CUR_RESULTADO")
USE IN CUR_RESULTADO
ENDIF
ENDIF
IF EMPTY(SPID_orfao)
WAIT WINDOW "Sem processo orfão no SQL Server" TIMEOUT 2.5
ELSE
csql = "KILL " + SPID_orfao
a = SQLEXEC(nID,csql)
ENDIF
[ ]'s
Peter
>Beleza, tirou todas a minha duvidas de msde, seguinte fiz os teste com a conexão setada para transação manual, ajustei o idle timeout, mas o problema continua, se a conexao é quebrada a tabela continua bloqueada no sql server, deve ter alguma propriedade no sqlserver, de modo que eu posso dizer ao banco que transações abertas com a quebra da conexao devem ser revertidas em x millesegundo ou sei la, de modo que ele libere as tabelas envolvidas, faz o teste ai e verifica que vc não consegue fazer nada, quando a conexao é quebrada por questões de link???