none
lock: timeout RRS feed

  • Pergunta

  • Olá... Estou com problema de performance em um banco de dados, executei um trace e apareceu o evento lock: timeout com duration = 0.

    Antes do lock: timeout  apareceu:

    exception error: 1222, severity: 16, state: 18.

    Não faço ideia porque apareceu essa mensagem.

    Obrigada

    • Movido Gustavo Maia Aguiar sexta-feira, 7 de outubro de 2011 19:52 (De:SQL Server - Desenvolvimento Geral)
    sexta-feira, 7 de outubro de 2011 18:51

Respostas

Todas as Respostas

  • Olá Elisangela. Inicialmente vale esclarecer que o é possível configurar o timeout do lock, indicando o tempo que a instrução aguarda até o lock sobre determinado recurso ser liberado  (você pode mudar o valor disso usando SET LOCK_TIMEOUT 5000, por exemplo, onde 5000 é igual a 5 segundos). Provavelmente você está tendo problema de contenção (locks demorados). Por padrão o valor do LOCK_TIMEOUT é -1, não traçando um tempo limite, digamos assim. Isso aumenta a preocupação, porque você deve ter transações longas em suas aplicações bloqueando recursos chaves. Vou deixar uma url para você dar uma averiguada a respeito:

     

    http://msdn.microsoft.com/en-us/library/aa337412.aspx

    (mais uma só pra garantir)

    http://blog.sqlauthority.com/2007/04/25/sql-server-alternate-fix-error-1222-lock-request-time-out-period-exceeded/


    SQL SERVER sempre
    sexta-feira, 7 de outubro de 2011 19:04
  • Olá... Obrigada pelos links, mas estou achando bem estranho pois não está ocorrendo locks demorados no banco que prenda recursos.

    Estou monitorando a algum tempo e isso não está ocorrendo.

     

    muito obrigada

    sexta-feira, 7 de outubro de 2011 19:25
  • Elisangela, Vamos por partes, você identificou que esta ocorrendo timeout? Você já verificou através da ferramenta Activity Monitor a ocorrência de Locks em seus objetos? Em relação ao erro, o código 1222 é recorrente de processos em lock que estão gerando timeout, isso era uma falha na versão 7 e 2000, mas que foi corrigidas ainda no SQL Server 2000. Tente através do sp_who2 ou sysprocess, identificar as transações e objetos em lock.
    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    domingo, 9 de outubro de 2011 19:47
    Moderador
  •  

    Identificamos o processo em lock fizemos alguams alterações agora vou continuar monitorando.

    Muito obrigada

     

    • Marcado como Resposta Elisangela Lima quarta-feira, 26 de outubro de 2011 15:48
    quarta-feira, 26 de outubro de 2011 15:48