TcSqlExec congelando o Smartclient em transações longas

Boa tarde!

Possuo algumas rotinas em minha empresa que executam Stored Procedure no Banco de Dados, para isso elas utilizam o comando TcSqlExec.

Acontece que quando essas SPs demoram muito tempo (20-40 minutos), o Smartclient perde a conexão com o AppServer. A conexão finaliza, porém o usuário não tem o retorno dessa conclusão do processo, porque o Smartclient não cai.

Tentei fazer um teste removendo o tempo de time-out do Configurador e também dos AppServer, mas mesmo assim o problema acontece.

Já tentei também o uso do Begin Transaction com o TcSqlExec dentro e também a chamada do ProcessMessage() após o término do processo.

Existe alguma outra maneira de tentar corrigir esse problema, de modo que o Smartclient não perca a conexão? Em todos os casos que verifiquei, o comando é executado até o final, mas não envia o feedback de conclusão para o Smartclient.

Boa tarde, vocês utilizam broker?

Bom dia! Não utilizamos, Daniel.

Giordano, boa tarde.

Tente utilizar o comando TCSPExec (http://tdn.totvs.com/display/tec/TCSPExec), é mais indicado para executar procedures.

Abraço,

Boa tarde, Felipe! Efetuei a troca do comando mas mesmo assim não resolveu o problema… Obrigado pela dica mesmo assim!

Bom dia. Verifique o tempo de conexão externa no seu banco de Dados. Eu tive o mesmo problema e a configuração de time-out foi corrigida no banco, no meu caso, SQL Server. No Protheus, para o usuário não ficar esperando o final da transação, execute a chamada do tcsqlexeq numa thread separada (startjob). Para os dois procedimentos você vai encontrar muito material na internet pra te ajudar. Sucesso!