Erro ao conectar SQLConnection: Connection Rejected by Remote Interface

27/08/2018

0

Olá;

Pessoal, estou passando por um baita perrengue para migrar os dados de um sistema legado que usa o Firebird 1.5 para a versão estável mais nova atualmente, a 3.0.3 usando o Delphi Berlim:

No caso, eu estou abrindo duas conexões para trabalhar com a migração dos dados: Uma para o FB 1.5 e outra para o FB 3.0. Ao abrir a conexão do FB 1.5, tudo corre sem problemas, mas ao fazer o mesmo na conexão do FB 3.0, o erro citado no título da pergunta ocorre;

O mais estranho, para mim, é que ao colocar 2 SQLConnections no formulário, configurá-los e então realizar a conexão em tempo de projeto, ambos funcionam perfeitamente. Mas, ao tentar conectá-los em tempo de execução, o componente designado para a versão mais nova dispara a exceção. O mesmo erro ocorre na minha classe, ao tentar me conectar com o FB 3.0.3;

Pensei que fosse um arquivo interno corrompido da IDE, mas mesmo depois de reinstalar todo o ambiente, o erro persiste;

Ambas as versões do Firebird estão rodando como aplicação;

Uso o Windows 10;
Rodrigo Gama

Rodrigo Gama

Responder

Post mais votado

28/08/2018

Olá;

Pessoal, consegui resolver o problema, e resolvi postar aqui para o caso de mais alguém cometer o mesmo vacilo que eu;

O problema estava no fato de que eu usava o DBExpress tanto para a conexão do banco legado quanto para o novo banco. Isso causava algum tipo de conflito interno em tempo de execução;

A solução encontrada foi passar a usar os componentes do FireDAC para a conexão do banco de dados Firebird 3.0. Lembrando que você precisará dos componentes fdConnection que, a grosso modo, é o SQLConnection do FireDAC, e o fdPhysFBDriverLink, que cria a comunicação do FireDAC com o Firebird. Nesse último componente foi necessário preencher a propriedade VendorLIb com o caminho da DLL correta. Você ainda pode precisar do componente fdTransaction;

Rodrigo Gama

Rodrigo Gama
Responder

Mais Posts

27/08/2018

Rodrigo Gama

Como eu não encontrei nenhuma funcionalidade para editar meu post, vou passar mais alguns detalhes por aqui mesmo:

- O Firebird 1.5 está rodando na porta 3050 e o 3.0, na porta 3053;
- Ao passar o dado do caminho do banco para dentro do componente, eu sempre passo o caminho completo de rede, no caso:
- 127.0.0.1/3050:C:\\Pasta\\Banco\\Banco.FDB e 127.0.0.1/3053:C:\\Pasta\\Banco\\Banco_30.FDB;
- Estou passando o caminho da DLL que está na pasta do Firebird de sua versão;
Responder

11/09/2018

Fabricio Kawata

Parabéns Rodrigo por compartilhar a sua solução com a comunidade. Isso é o que nos fortalece como grupo. Sozinho nunca se chega longe.

Forte abraço!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar