Servidor de BD cai! Como tratar erro?

Delphi

30/03/2007

Olá.

Tenho uma aplicação que quanto o servidor de BD cai, aparece o seguinte erro:
Unable to Complete network request to host xxxx Error writing data to the connection Foi forçado o cancelamento de uma conexão existente pelo host remoto
Como fazer para tratar esse erro? Isto é, aparecer uma mensagem agradável para o usuario, como por exemplo:
  MessageDlg( "O servidor não está acessivel!", mtErro, [mbOK], 0 );
  Application.Terminate;


Como tratar o erro de forma amigavel?


Marcelo

Marcelo

Curtidas 0

Respostas

Marcelo

Marcelo

30/03/2007

So para lembrar... estou falando do servidor de banco de dados (software), e não o servidor na REDE (máquina).


GOSTEI 0
Bon Jovi

Bon Jovi

30/03/2007

Serviço do servidor de banco de dados ou sua conexão com o bd que cai com o sistema ja aberto? Caso for sua conexao, entao nao mantenha ela aberta o tempo todo, somente durante as requisições.

  //conecte
  ADOConnection1.Connected := True;
  try
    //faz tudo que tiver que ser feito pra requisicao..
    //selects jogando pra memoria/clientdataset
    //inserts..
    //updates..
    //etc..
  finally
    //libere a conexao no final do procedimento
    ADOConnection1.Connected := False;
  end;



GOSTEI 0
Marcelo

Marcelo

30/03/2007

Prezado [b:84ca34418d]Bon Jovi[/b:84ca34418d].

Esse artifício é utilizado no ato da conexão, isso já faço. O que quero saber é o que fazer no caso do servidor de banco de dados (FB) cair, ser reiniciado, ser parado, etc. durante a navegação do sistema, por exemplo.
Quando isso ocorre, aparece uma mensagem como a citada acima, e consequentemente faz com que o sistema fique dando pau.

Quero tratar isso de forma amigável, de modo a forçar uma nova conexão no servidor de banco de dados (FB) ou sair do sistema.

Alguém pode me ajudar com isso?

Desde já agradeço pela atenção.


GOSTEI 0
Marcelo

Marcelo

30/03/2007

[b:b41e7fc9dd]Obs.:[/b:b41e7fc9dd]
Serviço do servidor de banco de dados ou sua conexão com o bd que cai com o sistema ja aberto? Caso for sua conexao, entao nao mantenha ela aberta o tempo todo, somente durante as requisições.
Isso ocasionará outro problema: lentidão. Já imaginou ter que conectar e desconectar no servidor (FB) toda vez que uma transação for requisitada?


GOSTEI 0
Bon Jovi

Bon Jovi

30/03/2007

Isso ocasionará outro problema: lentidão. Já imaginou ter que conectar e desconectar no servidor (FB) toda vez que uma transação for requisitada?
Se vc usar ADO com OLE DB nao terá esse tipo de problema ao reconectar, pois ele trabalha com pooling de conexões.


GOSTEI 0
Bon Jovi

Bon Jovi

30/03/2007

http://forum.clubedelphi.net/viewtopic.php?t=68465


GOSTEI 0
Marcelo

Marcelo

30/03/2007

[quote:5a376f3fb9=´Bon Jovi´]Se vc usar ADO com OLE DB nao terá esse tipo de problema ao reconectar, pois ele trabalha com pooling de conexões.[/quote:5a376f3fb9]
Prezado Bon Jovi,

Meu sistema tem algo de 250 tabelas no banco de dados FB, e todo o sistema esta utilizando os seguintes componentes:
SQLConnection <- SQLQuery <- DataSetProvider <- ClientDataSet <- DataSource
Acho inviável fazer essa modificação em meu fonte, pois além de haver algo em torno de 400 SQLQuery´s e dos componentes já estarem configurados, em algumas ocasiões faço tratamentos especificos com os componentes, e trocá-los a essa altura do campeonato seria uma perda de muito tempo.
Será que há alguma forma de tratar isso, sem ter que mudar meus componentes?


GOSTEI 0
POSTAR