SQLConnection não libera o banco de dados

143 views
Skip to first unread message

bastos

unread,
Dec 28, 2009, 4:32:50 PM12/28/09
to TboDbxFb Firebird DBX4 Driver
Tenho utilizado o driver com o Delphi 2007 sem problemas e com ótima
performance. Porém me deparei com uma situação que parece indicar que
ao liberar uma conexão com o componente SQLConnection (:= false;) o
banco não está sendo liberado.
A situação se deu quando implementei uma rotina para compactar um
banco.
No Delphi 7 com o driver UIB tudo funcionava sem problemas, mas ao
migrar para o D2007 e o driver TBO a restauração do banco dá erro
acusando que o banco está em uso.
Durantes os testes, tentando entender o problema, verifiquei que se
chamasse a rotina de compactação (exportação e restauração) sem abrir
uma conexão, tudo funciona. Mas se acesso qualquer funcionalidade que
abra um conexão, o banco não é mais liberado, mesmo executando a
instrução SQLConnection.connected:= false e independente da
propriedade KeepConnection estar true ou false.

Thiago Borges

unread,
Dec 28, 2009, 5:47:33 PM12/28/09
to tbod...@googlegroups.com

José Luís Bastos de Castro

unread,
Jan 9, 2010, 8:05:33 PM1/9/10
to tbod...@googlegroups.com
Thiago,

Tive algumas dificuldades de entender que a DLL que corrige o porblema está no arquivo de exemplo que você enviou na segunda resposta, mas funcionou a contento.

Agora estou com o mesmo problema que foi reportado pelo Alan em 12/02/2009 (Problema no driver: caracter na instrução SQL gera Unexpected end of command) e a sua última resposta foi em 06/03/2009. Você conseguiu uma solução?

Como contorno utilizei um ClientDataSet e uma rotina genérica de atribuição dos dados, no lugar do Exec do SQLDataSet com os comandos INSERT. Aparentemente o ClientDataSet trata adequadamente os caracteres não ASCII e os textos são gravados corretamente.

Os INSERTs funcionavam corretamente com o Delphi 7 e o driver UIB (dbexpUIBfire20.dll).

Abraços, José Luís

2009/12/28 Thiago Borges <thbo...@gmail.com>

Thiago Borges

unread,
Jan 12, 2010, 7:13:40 AM1/12/10
to tbod...@googlegroups.com
On 09/01/2010 23:05, Jos� Lu�s Bastos de Castro wrote:
> Como contorno utilizei um ClientDataSet e uma rotina gen�rica de
> atribui��o dos dados, no lugar do Exec do SQLDataSet com os comandos
> INSERT. Aparentemente o ClientDataSet trata adequadamente os
> caracteres n�o ASCII e os textos s�o gravados corretamente.
>

Jos� Luiz,

Tente com o driver para delphi 2010 do meu blog por favor (p�gina
inicial, post sobre desempenho/benchmark). Acho que ele est� correto.
Caso me confirme posso compilar para Delphi 2007 ou 2009 conforme voc�
precisar.

S� n�o fa�o isso pra voc� porque n�o estou tendo tempo.

--
Thiago Borges

José Luís Bastos de Castro

unread,
Jan 13, 2010, 6:53:41 AM1/13/10
to tbod...@googlegroups.com
Thiago,

infelizmente o resultado foi idêntico ao da versão para o 2007. Aparentemente você está fazendo algum tratamento da string passada para execução que não aceita caracteres não ASCII.

Estou anexando um exemplo do problema para seus testes.

Abraços,

José Luís

2010/1/12 Thiago Borges <thbo...@gmail.com>
On 09/01/2010 23:05, José Luís Bastos de Castro wrote:
Como contorno utilizei um ClientDataSet e uma rotina genérica de atribuição dos dados, no lugar do Exec do SQLDataSet com os comandos INSERT. Aparentemente o ClientDataSet trata adequadamente os caracteres não ASCII e os textos são gravados corretamente.


José Luiz,

Tente com o driver para delphi 2010 do meu blog por favor (página inicial, post sobre desempenho/benchmark). Acho que ele está correto. Caso me confirme posso compilar para Delphi 2007 ou 2009 conforme você precisar.

Só não faço isso pra você porque não estou tendo tempo.

--
Thiago Borges

TesteTBO2010.zip
Reply all
Reply to author
Forward
0 new messages