Array
(
)

Timeout Expired

Tuca@ctgeo.com.br
   - 10 fev 2004

Estou tendo um problema de Timeout Expired em uma sql.
Já tentei configurar no servidor o remote login query, e outros parâmetros, tentei no connection string colocar a opção CONNECT TIMEOUT e tb não funcionou.

Alguém teria uma sugestão?

Ps.: Eu não tenho o fonte do programa, eu faço um arquivo de conexão para ele ler.

Obrigado
Luiz Fernando

Tathianam
   - 19 mai 2004

Olá Amigos!

Eu também estava me matando de tentar solucionar essa questão então achei uma solução para Delphi e decidi compartilhar com vocês.

Primeiro (sem sucesso) tentei configurar o servidor SQL para que não utilizasse o timeout, através da propriedade ´Query Governor´. Fiz a seguinte função (query com execsql):

USE banco_de_dados_sql EXEC sp_configure ´+chr(39)+´QUERY_GOVERNOR_COST_LIMIT´+chr(39)+´, ´+chr(39)+´999999´+chr(39)+ ´ RECONFIGURE WITH OVERRIDE

Porém ainda não sabia que o ADO tinha alguns problemas em relação ao tempo limite excedido, e por mais que eu aumentasse esse valor 999999 ainda assim dava a mensagem.

Então achei a solução definitiva: setar manualmente o timeout das SPs e Querys do meu formulário.

Resolução em Delphi (coloquei esta função em uma unit de sistema):

type
TFriendDS = class(TCustomADODataSet);

procedure ResolveTimeOut(xForm:TForm);
var I: integer;
begin
with xForm do
begin
for I := 0 to ComponentCount - 1 do
if (Components[I] is TADOStoredProc) or (Components[I] is TADOQuery) then
TFriendDS(Components[I]).CommandTimeout := 999999;
end;
end;

Aí no form show bastou colocar a seguinte instrução:

ResolveTimeOut(self)

É isso aí pessoal, se alguém souber de outra alternativa compartilhe também...!!!

Rafaelunp
   - 01 jul 2004

Estou tendo um problema similar com o TimeOut.

Seguinte,

minha base de dados está com um volume muito grande, e com o timeout em 30 nunca dá tempo, porém com o timeout em 9000 por exemplo resolve o problema. sendo que eu não queria alterar isso em todos os forms. neste caso a função acima citada, parece resolver... mas eu nao entendi para que serve... voce poderia me explicar? e outra, qual a ´desvantagem´ de ter um timeout muito alto?!

Marcus.magalhaes
   - 12 jul 2004

Boa noite a todos,

Gostaria de fazer uma sugestão, não tentei somente resolver aumentando o timeout, tentei melhorar a forma de acesso, seja definindo índices nas tabelas que fação com que a leitura se torne mais rapida, ou melhorando a performance de procedures que são chamadas pela aplicação ou fazendo limpeza de dados (faça backup e limpe as informações que não são mais úteis), crei bancos de dados de historicos e armazene os dados lá.

Att,