Erro: quot;Transaction was deadlocked... quot;
Pessoal, tenho uma aplicação rodando em SQL Server a + de 2 anos e nas ultimas semanas um cliente me reportou o seguinte erro:
Transaction (Process ID 55) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
+ detalhes do erro: [url]www.vipcomputadores.com.br/erro.html[/url]
alguem saberia me dizer oq significa, e como foi ocasionado??
Grato
Ermindo
[b:c5a2880d89]Título removido: ´Aos DBAs de Plantao - ERRO Estranho´[/b:c5a2880d89]
Sandra/Moderação
Transaction (Process ID 55) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
+ detalhes do erro: [url]www.vipcomputadores.com.br/erro.html[/url]
alguem saberia me dizer oq significa, e como foi ocasionado??
Grato
Ermindo
[b:c5a2880d89]Título removido: ´Aos DBAs de Plantao - ERRO Estranho´[/b:c5a2880d89]
Sandra/Moderação
Ermindo
Curtidas 0
Respostas
Gandalf.nho
18/01/2005
[b:f929d05ac4][color=red:f929d05ac4]Notificação de Infração às Regras de Conduta :[/color:f929d05ac4][/b:f929d05ac4]
Título desafiador e não descritivo
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Título desafiador e não descritivo
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
GOSTEI 0
Marcus.magalhaes
18/01/2005
Boa tarde.
Um dead lock ocorre qdo dois processos concorrentes necessitam de recursos bloqueados entre eles, ex.:
[color=red:0a9e3583ad]
Processo A inicia transação
Processo B inicia transação
Processo A atualiza tabela A (ocasiona lock exclusivo)
Processo B atualiza tabela B (ocasiona lock exclusivo)
Processo A tenta atualizar tabela B (fica aguardando até que o lock seja terminado)
Processo B tenta atualizar tabela A (fica aguardando até que o lock seja terminado)[/color:0a9e3583ad]
[color=blue:0a9e3583ad]Como o lock nunca será terminado, pois para isso ocorrer, um processo necessita ser cancelado, [b:0a9e3583ad]o SS identifica qual processo tem menos tempo de CPU (visando gerar o mínimo de rollback)[/b:0a9e3583ad] e o mata liberando a tabela para o outro processo ser finalizado.[/color:0a9e3583ad]
No exemplo acima o processo B seria finalizado.
Para evitar que ocorram Dead Locks é ideal que os processos tentem usar as tabelas sempre na mesma sequencia. Ex.:
[color=red:0a9e3583ad]
Processo A inicia transação
Processo B inicia transação
Processo A atualiza tabela A (ocasiona lock exclusivo)
Processo B atualiza tabela A (fica aguardando até que o lock seja terminado)
Processo A atualiza tabela B (ocasiona lock exclusivo)
Processo A termina a transação
Processo B consegue atualizar tabela A (ocasiona lock exclusivo)
Processo B atualiza tabela B (ocasiona lock exclusivo)
Processo B termina a transação[/color:0a9e3583ad]
Espero ter ajudado.
Att,
Um dead lock ocorre qdo dois processos concorrentes necessitam de recursos bloqueados entre eles, ex.:
[color=red:0a9e3583ad]
Processo A inicia transação
Processo B inicia transação
Processo A atualiza tabela A (ocasiona lock exclusivo)
Processo B atualiza tabela B (ocasiona lock exclusivo)
Processo A tenta atualizar tabela B (fica aguardando até que o lock seja terminado)
Processo B tenta atualizar tabela A (fica aguardando até que o lock seja terminado)[/color:0a9e3583ad]
[color=blue:0a9e3583ad]Como o lock nunca será terminado, pois para isso ocorrer, um processo necessita ser cancelado, [b:0a9e3583ad]o SS identifica qual processo tem menos tempo de CPU (visando gerar o mínimo de rollback)[/b:0a9e3583ad] e o mata liberando a tabela para o outro processo ser finalizado.[/color:0a9e3583ad]
No exemplo acima o processo B seria finalizado.
Para evitar que ocorram Dead Locks é ideal que os processos tentem usar as tabelas sempre na mesma sequencia. Ex.:
[color=red:0a9e3583ad]
Processo A inicia transação
Processo B inicia transação
Processo A atualiza tabela A (ocasiona lock exclusivo)
Processo B atualiza tabela A (fica aguardando até que o lock seja terminado)
Processo A atualiza tabela B (ocasiona lock exclusivo)
Processo A termina a transação
Processo B consegue atualizar tabela A (ocasiona lock exclusivo)
Processo B atualiza tabela B (ocasiona lock exclusivo)
Processo B termina a transação[/color:0a9e3583ad]
Espero ter ajudado.
Att,
GOSTEI 0
Flavio Sanches
18/01/2005
Seguinte: Administro uma base de dados de cerca de 60 GB (SQLServer 2000). Meus HDs tem 70 Gb e minha base não pode crescer muito por absoluta falta de espaço. Acontece que ultimamente, quando eu executo o shrink (preciso fazer isso toda semana pra evitar um crescimento muito grande) ele retorna esse erro. Entrei em contato com outros profissionais e eles levantaram a possibilidade de ser por causa do pouco espaço do HD então eu tirei o LDF desse HD, liberando assim 13 gb, só que ainda dá o mesmo erro. Queria saber por que isso acontece e como eu faço pra resolver o problema.
abraço
abraço
GOSTEI 0
Marcus.magalhaes
18/01/2005
bom dia.
Utilize [b:4c05d064f8]dbcc shrinkfile(´nome do arquivo´, tam_desejado)[/b:4c05d064f8]
Porém receber erro de deadlock durante um shrink eu nunca vi.
Quais são os tamanhos dos seus discos e a distribuição dos seus arquivos?
Att,
Utilize [b:4c05d064f8]dbcc shrinkfile(´nome do arquivo´, tam_desejado)[/b:4c05d064f8]
Porém receber erro de deadlock durante um shrink eu nunca vi.
Quais são os tamanhos dos seus discos e a distribuição dos seus arquivos?
Att,
GOSTEI 0
Flavio Sanches
18/01/2005
Dados 50 GB e log 15 Gb
Ambos num raid 1 de 2 HD´s scsi de 70 Gb.
O que eu já fiz? Fiz o seguinte: Renomeei o arquivo de log e atachei o banco dinovo e ele criou assim, um arquivo novo.
Agora, o erro no srhink que acontecia 100¬ das vezes, agora acontece 50¬ das vezes.
grato pela dica!
Flávio Sanches
Ambos num raid 1 de 2 HD´s scsi de 70 Gb.
O que eu já fiz? Fiz o seguinte: Renomeei o arquivo de log e atachei o banco dinovo e ele criou assim, um arquivo novo.
Agora, o erro no srhink que acontecia 100¬ das vezes, agora acontece 50¬ das vezes.
grato pela dica!
Flávio Sanches
GOSTEI 0