Você pode encontrar uma afirmação 'resultado == LCK_OK' em um servidor de espelho sql

Sintomas

Na arquitetura de espelhamento do Microsoft SQL Server, você pode encontrar uma afirmação do Servidor SQL no servidor do parceiro (espelho). Além disso, você encontra uma mensagem de erro que se assemelha ao seguinte no registro de erro do servidor SQL. Este erro geralmente significa que o par espelho deve ser reconstruído.

SQL Server Afirmação: Arquivo: loglock.cpp, line=834 Falha afirmação = 'resultado == LCK_OK' . Este erro pode estar relacionado com o tempo. Se o erro persistir após a repetição da declaração, use o DBCC CHECKDB para verificar o banco de dados quanto à integridade estrutural ou reiniciar o servidor para garantir que as estruturas de dados na memória não sejam corrompidas. Erro: 3624, Gravidade: 20, Estado: verificação de afirmação do sistema 1.A falhou. Verifique o registro de erro do servidor SQL para obter detalhes. Normalmente, uma falha de afirmação é causada por um bug de software ou corrupção de dados. Para verificar se há corrupção no banco de dados, considere a execução do DBCC CHECKDB. Se você concordou em enviar lixeiras para a Microsoft durante a configuração, um mini despejo será enviado para a Microsoft. Uma atualização pode estar disponível na Microsoft no pacote de serviços mais recente ou em um QFE de suporte técnico.

Nota Quando esse problema ocorre, um arquivo de mini-despejo é gerado na pasta de registro de erro do Servidor SQL. Este arquivo tem um nome que se assemelha a "SQLDumpnnnn.mdmp".

Causa

Esse problema pode ocorrer em vários cenários diferentes. Cada cenário tem uma causa e resolução diferentes, e cada cenário pode fazer com que a mesma mensagem de erro e afirmação ocorram. Notas

  • Embora a assinatura de erro pareça ser muito específica, o erro real é causado por uma afirmação que falhou. Por exemplo, o erro pode ser causado por uma afirmação que realiza uma verificação proativa no código do servidor SQL que valida as condições "saudáveis", a fim de falhar o mais limpa possível, em vez de causar um acidente em todo o processo.

  • Você não pode facilmente determinar a causa real. Os Serviços de Suporte ao Cliente da Microsoft geralmente determina a causa. Ele geralmente faz isso coletando o principal arquivo de backup completo do banco de dados e os backups de registro de transação que cobrem o tempo do problema. Além disso, um arquivo de despejo de processo completo do espelho pode ser necessário para reproduzir o problema em configurações específicas.

Resolução

Informações do pacote de serviços

Para resolver esse problema, obtenha a correção mais recente para sua versão do Servidor SQL. Para mais informações, consulte a tabela a seguir.

Causa

Artigo base do conhecimento

Primeiro fixo em

Comportamento diferente do fechamento entre o preliminar e o espelho

2938828 FIX: Dados de dados espelhando hits afirmam e espelhando sessão mostra estado suspenso no Servidor SQL 2012 ou SQL Server 2014

2931693 Atualização Cumulativa 1 para servidor SQL2014 2931078 Atualização Cumulativa 9 para servidor SQL 2012 SP1

Problemas de escalada de bloqueio

CORREÇÃO 953625: Mensagem de erro quando o SQL Server 2005 sincroniza um banco de dados espelhado: "Expressão: resultado == LCK_OK"

Pacote de atualização cumulativa 951217 8 para o Pacote de Serviço sql 2005

Migração de bloqueio durante as divisões da página

974319 FIX: Mensagem de erro intermitente e falha de afirmação quando você usa o espelho do banco de dados no SQL Server 2005, no SQL Server 2008, ou no SQL Server 2008 R2: "SQL Server Assertion: File: <loglock.cpp>, line=823 Failed Assertion = 'result == LCK_OK'"

Pacote de atualização cumulativa 974648 6 para o SQL Server 2005 Service Pack 3975976 Pacote de atualização cumulativa 8 para o SQL Server 2008975977 Pacote de atualização cumulativa 5 para o Pacote de Serviço SQL 2008 1975976 Pacote de atualização cumulativa 1 para o SQL Server 2008 R2

Inserção em massa / BCP com Check_Constraints OFF

SQL Server 2012

Alteração das chaves de criptografia:

  • Chave mestra do banco de dados

  • Chave mestra do exemplo do servidor

SQL Server 2012

Shrink Operations (PurgeIAM) em conflito com outras transações

982933 Mensagem de erro quando você encolhe arquivos de dados no principal em um banco de dados espelhando para dois servidores do SQL Server 2005

Pacote de atualização cumulativa 983329 10 para o Pacote de Serviço sql 2005

Divisão de página seguida de escalada de bloqueio seguida de deslocação e uma alocação dessa página

983564 FIX: Mensagem de erro quando você usa o espelhamento do banco de dados no Microsoft SQL Server 2005, Microsoft SQL Server 2008 ou Microsoft SQL Server 2008 R2, e uma falha de afirmação ocorre intermitentemente

983329 Pacote de atualização cumulativa 10 para o Pacote de Serviço sql 2005 Service Pack 32083921 Atualização cumulativa 9 para o SQL Server 2008 Service Pack 12289254 Atualização cumulativa 1 para o SQL Server 2008 Service Pack 22261464 atualizar pacote cumulativo 3 para o servidor SQL 2008 R2

Observações

  • A última coluna lista apenas a primeira compilação que contém a correção. Como os compiladores do Servidor SQL são cumulativos, configurações posteriores, como o SQL Server 2008 R2 SP1, contêm essas correções. No entanto, essas compilações não estão listadas na tabela.

  • Qualquer compilação mais tarde do que o SQL Server 2005 SP3 Cumulative Update (CU) 10, SQL Server 2008 SP2 1, ou SQL Server 2008 R2 CU3 contém todas as correções listadas para cenários de afirmação lck_ok. No momento em que este artigo foi escrito, essas compilações foram substituídas por pelo menos um pacote de serviço completo. O pacote de serviço deve proteger a maioria dos compilações atualizadas instaladas do Servidor SQL nos cenários fixos. Para obter mais informações sobre como obter o pacote de serviço sinuoso para a sua versão do SQL Server, clique nos seguintes números de artigos para visualizar os artigos na Base de Conhecimento da Microsoft:

    913089 Como obter o pacote de serviço mais recente para SQL Server 2005968382 Como obter o mais recente pacote de serviços para SQL Server 20082527041 Como obter o mais recente pacote de serviços para SQL Server 2008 R2

  • Você deve estar ciente de que dois cenários não têm correções disponíveis. A razão é que essas duas questões exigem uma rearquitetura de internos de registro de transações do SQL Server. Essa alteração pode ser incluída apenas com uma versão importante do SQL Server. Neste caso, o problema é corrigido no Microsoft SQL Server 2012.The cenário de mudança de chave mestre é um evento raro o suficiente para tornar o cenário um caso de canto. No entanto, o cenário de inserção bcp/granel é comum. Como o cenário de inserção bcp/bulk permanece não fixado para o SQL Server 2008 e o SQL Server 2008 R2, é a causa mais provável conhecida de afirmações de "lck_ok" nas compilações atuais desses produtos. Para obter mais informações sobre esse cenário, consulte a seção "Mais Informações".

  • Este artigo pode não refletir questões que foram descobertas após sua publicação. Você pode pesquisar na Base de Conhecimento da Microsoft por qualquer novo artigo "Fix" individual, conforme aplicável.

Status

A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".

Informações adicionais

Cenário de inserção a granel BCP/Bulk

Um erro de 3624, juntamente com um "resultado == LCK_OK" afirmação pode ocorrer no parceiro espelho de um servidor SQL 2008 ou um conjunto de espelhamento SQL Server 2008 R2 se as seguintes condições forem verdadeiras:

  • Uma atividade de inserção em massa do BCP ou de massa está ocorrendo no banco de dados principal.

  • A atividade de inserção BCP/Bulk utiliza a CHECK_CONSTRAINTS = opção OFF. Nota O valor padrão para esta opção é OFF.

Para contornar esse problema, defina a opção CHECK_CONSTRAINTS ON para a operação BCP/Bulk Insert. O desempenho da operação bcp/operação de inserção a granel pode ser afetado. Nota O SQL Server 2012 não é afetado por esse problema.

Referências

Para obter mais informações sobre a terminologia de atualização de software, clique no número seguinte do artigo para visualizar o artigo na Base de Conhecimento da Microsoft:

824684 Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Estas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×