15986 - Deadlock no agendamento de cargas automáticas
Problema: Ao consultar os logs dos Processos Automáticos de Extração dos Datamarts do ETL é exibida a seguinte mensagem:
Erro durante a extração: Erro ao processar a extração do data mart: Erro de acesso ao banco de dados:
Banco de Dados: SQL Server 2008.
Erro do Banco (1205): Error Message: [Microsoft][SQL Server Native Client 10.0][SQL Server]Transaction (Process ID XX) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
[...]
Solução: O erro é um lock (travamento/bloqueio) no banco de dados que pode ser causado por diversos motivos. O mais provável dos motivos é que os Agendamentos de extração dos DataMarts estão configurados para executarem no mesmo horário ou com horários muito próximos, algumas extrações demoram mais que outras e vão travar/bloquear (lockar) o banco de dados enquanto estão em execução, consequentemente as demais extrações serão rejeitadas.
Para solucionar esta situação deve-se revisar as parametrizações de agendamento dos processos automáticos de extrações de TODOS os DataMarts. Nossa sugestão é que os agendamentos sejam feitos utilizando o campo Processo Sucessor, e também realizar uma ordem cronológica de execução destes DataMarts, minimizando o risco de causar um lock (bloqueio) no banco de dados.
Erro durante a extração: Erro ao processar a extração do data mart: Erro de acesso ao banco de dados:
Banco de Dados: SQL Server 2008.
Erro do Banco (1205): Error Message: [Microsoft][SQL Server Native Client 10.0][SQL Server]Transaction (Process ID XX) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
[...]
Solução: O erro é um lock (travamento/bloqueio) no banco de dados que pode ser causado por diversos motivos. O mais provável dos motivos é que os Agendamentos de extração dos DataMarts estão configurados para executarem no mesmo horário ou com horários muito próximos, algumas extrações demoram mais que outras e vão travar/bloquear (lockar) o banco de dados enquanto estão em execução, consequentemente as demais extrações serão rejeitadas.
Para solucionar esta situação deve-se revisar as parametrizações de agendamento dos processos automáticos de extrações de TODOS os DataMarts. Nossa sugestão é que os agendamentos sejam feitos utilizando o campo Processo Sucessor, e também realizar uma ordem cronológica de execução destes DataMarts, minimizando o risco de causar um lock (bloqueio) no banco de dados.