Erro de Dead Lock - Firebird
olá amigos,
Temos um cliente onde nossa aplicação, às vezes (tipo a cada 10 dias + ou -), dá erro de dead lock. O firebird instalado é a versão 1.5.6. Uso Delphi 7 e alguns clientes (poucos) dão esse erro. É sempre na gravação de uma tabela via stored procedure. Já coloquei tratamentos para gravar log quando gera erro, só que nem passa na rotina... Alguém já passou por isso?
A instalação default do firebird que usamos é a Super Server. Bom, tentei deixar como Classic, porém também gera dead lock. E até trocamos o servidor de banco de dados, para uma maquina melhor... nada.
Temos um cliente onde nossa aplicação, às vezes (tipo a cada 10 dias + ou -), dá erro de dead lock. O firebird instalado é a versão 1.5.6. Uso Delphi 7 e alguns clientes (poucos) dão esse erro. É sempre na gravação de uma tabela via stored procedure. Já coloquei tratamentos para gravar log quando gera erro, só que nem passa na rotina... Alguém já passou por isso?
A instalação default do firebird que usamos é a Super Server. Bom, tentei deixar como Classic, porém também gera dead lock. E até trocamos o servidor de banco de dados, para uma maquina melhor... nada.
Fernando
Curtidas 0
Respostas
Fernando
29/10/2012
Esqueci de comentar: a gravação na tabela está sendo feita por transação (commit/rollback), ou seja, está sendo tratada.
GOSTEI 0
Claudia Nogueira
29/10/2012
É muito estranho dar esse problema no firebird trabalhando com transação. Pois dessa forma se estiver editando em duas máquinas ao mesmo tempo um registro, as duas alterações são realizadas, isso se não bloquear o registro. Isso ocorre aleatoriamente em todo o sistema, ou na gravação de alguma tabela específica?
Quais componentes de conexão com o banco de dados você está utilizando?
Quais componentes de conexão com o banco de dados você está utilizando?
GOSTEI 0
Fernando
29/10/2012
O erro é sempre na mesma tabela (tabela de movimentação de estoque), que é a mais usada no sistema.
Ela tem como chave primária um sequencial (generator + trigger).
A gravação (DBExpress - delphi 7) é feita via stored procedure SQLStoredProc. O interessante é que não são todos os clientes que ocorrem isso... tem até cliente que usa intensamente o sistema e não ocorre deadlock.
Ela tem como chave primária um sequencial (generator + trigger).
A gravação (DBExpress - delphi 7) é feita via stored procedure SQLStoredProc. O interessante é que não são todos os clientes que ocorrem isso... tem até cliente que usa intensamente o sistema e não ocorre deadlock.
GOSTEI 0