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 |