Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Transações não concluidas
Message
De
11/09/2005 18:24:35
Peter Wagner
Point Informática Ltda.
Limeira, Brésil
 
 
À
11/09/2005 15:31:17
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows 2000 Server
Database:
MS SQL Server
Divers
Thread ID:
01048390
Message ID:
01048566
Vues:
18
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
* finaliza o processo no SQL Server
	csql = "KILL " + SPID_orfao
	a = SQLEXEC(nID,csql)
* bla,bla,bla....
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???
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform