Erro "Database is locked" no NDD Print Host

Falha

Os serviços NDD Print Host e NDD Print Releaser apresentam indisponibilidade devido ao erro "Database is locked", que impede a gravação no banco de dados SQLite.

Sintomas

  • Falhas temporárias na comunicação entre os componentes da solução.

  • Perda momentânea no processamento de requisições.

  • Indisponibilidade dos serviços de sincronização de cache.

  • Necessidade frequente de reiniciar manualmente os serviços.

  • Aumento da recorrência de chamados de suporte.

Evidências

No Visualizador de Eventos (Event Viewer) do Windows, em Logs de Aplicativo, identificam-se registros como o exemplo abaixo:

Falha ao executar sincronia - Exception: System.AggregateException:
Um ou mais erros...
-> System.Data.Entity.Infrastructure.CommitFailedException:
An error was reported while committing a database transaction...
-> System.Data.SQLite.SQLiteException:
database is locked

O erro ocorre durante a sincronização do cache ou na confirmação das transações do banco de dados.

Causa

Os módulos NDD Print Host e NDD Print Releaser usam, por padrão, o banco de dados SQLite.

O SQLite é um banco de dados de arquivo único, indicado para ambientes simples, testes ou pequenas implantações. Porém, tem uma limitação importante de concorrência: permite apenas um processo de escrita por vez.

Em ambientes corporativos com grande volume de impressões, múltiplos usuários e equipamentos realizando operações simultâneas, várias gravações podem ocorrer ao mesmo tempo. Nessas situações, o arquivo do banco de dados é bloqueado temporariamente, causando o erro:

System.Data.SQLite.SQLiteException: database is locked

Essa limitação é inerente ao SQLite e ocorre com mais frequência conforme aumenta a carga de utilização do ambiente.

Solução

Migrar o banco de dados da aplicação para o Microsoft SQL Server.

O SQL Server tem arquitetura cliente-servidor e foi criado para ambientes corporativos, oferecendo:

  • Suporte a alta concorrência de acessos.

  • Controle avançado de bloqueios.

  • Melhor desempenho em operações simultâneas.

  • Maior escalabilidade.

  • Maior estabilidade em ambientes com alto volume de impressão.

A edição SQL Server Express atende à maioria das implantações que não exigem recursos corporativos avançados.

Recomendações

Novas implantações

Use o Microsoft SQL Server como banco de dados padrão desde o início.

Ambientes existentes

Planeje a migração do SQLite para o SQL Server quando houver:

  • recorrência do erro "database is locked".

  • aumento do volume de impressões.

  • crescimento do número de usuários.

  • expansão do número de equipamentos monitorados.

Comparativo Técnico

Característica

SQLite

Microsoft SQL Server

Arquitetura Geral

Baseado em arquivo local único

Servidor dedicado multiusuário corporativo

Escrita simultânea

Apenas um processo por vez

Alta concorrência com bloqueios em nível de registro ou página

Comportamento sob Carga

Gargalos e erro "database is locked"

Otimização de desempenho e recuperação automática

Escalabilidade Futura

Limitada para expansão de infraestrutura

Alta escalabilidade e suporte ao crescimento

Last updated: