Erro de asserção de SQL Server quando você tenta executar uma instrução Bulk Insert ou BCP: "<loglock.cpp>, linha = 807 falha na asserção = ' resultado = = LCK_OK'"</loglock.cpp>

Traduções de Artigos Traduções de Artigos
Artigo: 2700641 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sintomas

Considere o seguinte cenário:
  • Servidor a e b do servidor estiver executando Microsoft SQL Server 2008 ou SQL Server 2008 R2.
  • Configurar o espelhamento de banco de dados entre o servidor e o servidor B.
  • Executar uma instrução BCP ou BULK INSERT no banco de dados principal.

    Observação Por padrão, a opção CHECK_CONSTRAINTS é definida como desativado quando você executar uma instrução de BCP ou BULK INSERT.
  • O espelhamento de banco de dados é interrompido e o sessão de espelhamento de banco de dados entra no estado suspenso.
Nesse cenário, uma declaração ocorre no servidor de espelho. Portanto, um arquivo de mini-despejo é criado na pasta de log SQL Server. Além disso, você verá o seguinte erro no log de erro do SQL Server no servidor de espelho:

data hora spid Usando 'dbghelp. dll' versão '4.0.5'
data hora spid ** Dump thread - spid = 31, EC = 0x00000007F9B1C1A0
data hora spid *** Despejo de pilha sendo enviado para C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\LOG\SQLDump0001.txt

data hora spid * *******************************************************************************

data hora spid *
data hora spid * INICIAR DESPEJO DE PILHA:
data hora spid * 01/04/12 16: 46: 21 12100 spid
data hora spid *
data hora spid * Local: loglock.cpp:807
data hora spid * Expressão: resultado = = LCK_OK
data hora spid * SPID: 31
data hora spid * Identificação do processo: 2228

data hora spid Erro: 17066, gravidade: 16, estado: 1.

data hora spid Declaração de SQL Server: Arquivo: <loglock.cpp>, linha = 807 falha na asserção = ' resultado = = LCK_OK'. Este erro pode ser relacionados. Se o erro persistir após executar a instrução novamente, use DBCC CHECKDB para verificar a integridade estrutural do banco de dados ou reiniciar o servidor para garantir que as estruturas de dados na memória não estão corrompidas.

</loglock.cpp>data hora spid Erro: 3624, gravidade: 20, estado: 1.

data hora spid Falha ao verificar sistema de declaração. Verifique o log de erro de SQL Server para obter detalhes. Normalmente, uma falha de declaração é causada por uma software bug ou corrupção de dados. Para verificar a corrupção do banco de dados, considere executar DBCC CHECKDB. Se você concordou em Enviar despejos para a Microsoft durante a instalação, um mini despejo será enviado à Microsoft. Uma atualização pode ser disponibilizada pela Microsoft Service Pack mais recente ou uma QFE do suporte técnico.

data hora spid Erro: 1454, gravidade: 16, estado: 1.

data hora spid Espelhamento de banco de dados será suspenso. Instância do servidor '<Instance name="">' encontrou um erro ao 3624, estado 1, gravidade 20 quando estava atuando como um parceiro de espelhamento de banco de dados '<database name="">'. O parceiros de espelhamento de banco de dados pode tentar recuperar automaticamente o erro e continuar a sessão de espelhamento. Para obter mais informações, exiba o log de erro para mensagens de erro adicionais. </database></Instance>


Observação Você deve reinicializar o espelhamento de banco de dados para resolver esse problema.

Causa

Esse problema ocorre porque as informações de compatibilidade de bloqueio no log de transações do banco de dados principal não são transferidas para o servidor de espelhamento.

Como contornar

Para contornar esse problema, execute a instrução BULK INSERT ou BCP no banco de dados principal usando a opção CHECK_CONSTRAINTS ativado.

Observação A opção ativado CHECK_CONSTRAINTS faz com que o desempenho mais lento. No entanto, o bloqueio assert no espelho servidor não ocorre.

Mais Informação

Durante a operação BCP ou BULK INSERT, uma transação filho desativa a opção CHECK_CONSTRAINTS. Esta transação filho usa um bloqueio é compatível com os bloqueios de transação do pai. As informações de compatibilidade são armazenadas no log de transação do banco de dados principal. Portanto, a solicitação de bloqueio de transação filho é concedida no banco de dados principal.

No entanto, essas informações de compatibilidade não são transferidas para o servidor de espelhamento. Portanto, a solicitação de bloqueio de transação filho é incompatível com os bloqueios de transação pai no servidor de espelho. Essa situação causa assert no servidor de espelho.

Propriedades

Artigo: 2700641 - Última revisão: 6 de agosto de 2012 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 Enterprise
Palavras-chave: 
kbsurveynew kbtshoot kbprb kbmt KB2700641 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 2700641

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com