Informações sobre bloqueios de SQL
Um “SQL Deadlock” ocorre no Microsoft Dynamics 365 Business Central quando dois ou mais processos estão à espera de recursos que estão bloqueados uns pelos outros. Nesta situação, nenhuma das transacções envolvidas pode prosseguir porque cada uma delas detém um recurso de que a outra necessita. Para resolver o conflito, o servidor SQL seleciona automaticamente um processo como a vítima do impasse e termina-o revertendo a transação. O outro processo pode então continuar as alterações necessárias.
Impacto dos bloqueios de SQL
- Não ocorre perda de dados, uma vez que o código Dynamics AL bem concebido e as suas transacções SQL resultantes são concebidos para recuar de forma limpa em caso de falha.
- Para os utilizadores finais, por exemplo, quando utilizam o Web Client, um impasse resulta numa mensagem de erro. O utilizador deve então repetir a ação.
Evitar bloqueios
- Uma ordem de bloqueio consistente entre processos pode evitar a maioria dos bloqueios. Isto deve ser definido e aplicado na lógica da aplicação.
- Nem sempre é possível evitar completamente o bloqueio, especialmente quando as considerações de desempenho exigem sequências de bloqueio variáveis.
Relevância para a aplicação móvel Anvaigo
- Os bloqueios de SQL não são críticos na aplicação móvel Anvaigo, uma vez que os mecanismos de repetição automática garantem que as transacções falhadas são reprocessadas.
- A vítima do impasse não tem qualquer impacto negativo no processamento de dados ou na experiência do utilizador, uma vez que este não verá qualquer nova tentativa.
- Neste contexto, nem sempre é possível evitar um impasse, uma vez que a ordem de bloqueio dos recursos determina por si só a ocorrência de uma situação de impasse.
- No entanto, isto não é problemático porque o sistema repete automaticamente o processamento dos dados recebidos, garantindo que é concluído com êxito.
