CORRECÇÃO: Consulta com nível de isolamento de transação definido para READ UNCOMMITTED falha com erro 601

Traduções deste artigo Traduções deste artigo
ID do artigo: 815008 - Exibir os produtos aos quais esse artigo se aplica.
BUG #: 363988 (SHILOH_BUGS)
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando uma consulta é executada com seu nível de isolamento de transação definido para READ UNCOMMITTED, o SQL Server 2000 anula a consulta e retorna a seguinte mensagem de erro:

Servidor: Mensagem 601, nível 12, estado 3, linha 14
Não pôde continuar a verificação com NOLOCK devido à movimentação de dados.

Causa

Esse comportamento pode ocorrer quando uma linha em uma tabela é excluída entre a hora que do SQL Server lê o local da linha de um índice e o SQL Server busca a linha de tempo.

Resolução

Informações sobre o service pack

Para resolver esse problema, obtenha o service pack mais recente para o Microsoft SQL Server 2000. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211Como obter o SQL Server 2000 service pack mais recente

Informações sobre o hotfix

A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas em tempo de universal coordenado (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
Date		Time	Version		Size		 File name
-----------------------------------------------------------------------------

07-Feb-2003	16:14			  786,432 bytes  Distmdl.ldf
07-Feb-2003	16:14			2,359,296 bytes  Distmdl.mdf
29-Jan-2003	12:25			      180 bytes  Drop_repl_hotfix.sql
31-Jan-2003	11:02	2000.80.763.0	1,557,052 bytes	 Dtsui.dll     
29-Jan-2003	15:48			  746,470 bytes  Instdist.sql
29-Jan-2003	12:25	                    1,402 bytes  Inst_repl_hotfix.sql
07-Feb-2003	17:10	2000.80.765.0      90,692 bytes  Msgprox.dll  
29-Jan-2003	11:48	7.0.9466.0        344,064 bytes  Msvcr70.dll      
29-Jan-2003	11:48	2000.80.722.0      57,904 bytes  Osql.exe         
07-Feb-2003	14:23                   1,065,895 bytes  Replmerg.sql
07-Feb-2003	17:10	2000.80.765.0	  221,768 bytes  Replprov.dll     
07-Feb-2003	17:10	2000.80.765.0     307,784 bytes  Replrec.dll      
29-Jan-2003	15:48		   	1,084,318 bytes  Replsys.sql
29-Jan-2003	11:48	2000.80.534.0	  127,548 bytes  Sqdedev.dll    
07-Feb-2003	17:10	2000.80.765.0	  176,696 bytes  Sqlmap70.dll  
07-Feb-2003	17:10	2000.80.765.0	   57,920 bytes  Sqlrepss.dll    
14-Feb-2003	13:22	2000.80.769.0   7,512,145 bytes  Sqlservr.exe   
29-Jan-2003	11:48	2000.80.194.0     180,290 bytes  Sqlunirl.dll     
07-Feb-2003	17:10	2000.80.765.0      45,644 bytes  Sqlvdi.dll   
07-Feb-2003	17:10	2000.80.765.0      82,492 bytes  Ssnetlib.dll     
				
Observação Devido às dependências do arquivo, o hotfix mais recente ou o recurso que contém os arquivos também pode conter arquivos adicionais.


Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".Esse problema foi corrigido primeiro no Microsoft SQL Server 2000 Service Pack 4.

Mais Informações

Depois de instalar o hotfix, você pode usar o sinalizador de rastreamento 9134 para alterar o comportamento do SQL Server. Para ativar o sinalizador de rastreamento 9134 para que ele é ativado sempre que SQL Server inicia, adicionar o sinalizador de rastreamento como um parâmetro de inicialização do SQL Server. Para adicionar o sinalizador de rastreamento 9134 como um parâmetro de inicialização do SQL Server, execute estas etapas:
  1. No SQL Server Enterprise Manager, clique com o botão direito do mouse no servidor que está executando o SQL Server e, em seguida, clique em Propriedades .
  2. Na guia Geral , clique em inicialização parâmetros .
  3. Na caixa de texto do parâmetro , digite -T9134 , clique em Adicionar e, em seguida, clique em OK .
  4. Em Properties(Configure) do SQL Server < servidor nome > diálogo caixa, clique em OK .
  5. Reinicie o serviço SQL Server para o novo parâmetro entrem em vigor.
Como alternativa, você pode executar a seguinte consulta no Query Analyzer para ativar o sinalizador de rastreamento dinamicamente:
DBCC TRACEON (9134, -1)
Contudo, se você não adicionar o sinalizador de rastreamento 9134 como um parâmetro de inicialização, o efeito do comando DBCC TRACEON é perdido quando o serviço do SQL Server é reiniciado.

Quando o sinalizador de rastreamento 9134 é ativado e uma linha é excluída ou modificada entre a hora que do SQL Server lê o local da linha e o tempo que ele busca a linha por meio de uma pesquisa de indicador, a consulta não irá anular ou retornar erro 601. Em vez disso, SQL Server ignora a linha que não pode ser localizada e ele continua a procurar linhas adicionais que atendem aos critérios de consulta. Portanto, continua a execução da consulta; no entanto, os resultados que o SQL Server retorna podem não incluir linhas que foram excluídas ou movidas durante a execução da consulta.

Observação As informações neste artigo e o rastreamento de sinalizador aplicar somente a uma consulta que está sendo executada com o nível de isolamento de transação definidas para READ UNCOMMITTED. As informações não se aplica a uma consulta que é executada com a dica de otimizador NOLOCK. Nesse caso, o comportamento permanece inalterado desde o que é descrito na seção "Sintomas".

Além disso, o sinalizador de rastreamento não afeta o fato de que outras inconsistências de erros e dados podem ocorrer ao ler dados não confirmados. Para obter mais informações sobre os níveis de isolamento com suporte do SQL Server e o efeito de utilizar cada nível de isolamento, consulte o tópico "Bloqueio" nos manuais online do SQL Server.

Microsoft não recomenda o uso desse sinalizador de rastreamento, a menos que todos os itens a seguir se aplicam:
  • O aplicativo em uso requer um nível de isolamento UNCOMMITTED leitura.
  • O aplicativo em uso está enfrentando um grande número de 601 erros.
  • Você compreender que quando você usar o sinalizador de rastreamento, as linhas que foram excluídas ou movidas durante a execução da consulta são ignoradas.
Observação Antes de usar o nível de isolamento READ UNCOMMITTED, você deve compreender sua funcionalidade. Para obter mais informações sobre o nível de isolamento UNCOMMITTED READ, visite o seguinte site da Web Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms171885.aspx

Referências

Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
235880INF: O otimizador dicas NOLOCK ou nível de isolamento UNCOMMITTED leitura gera erro 605
Para obter mais informações, visite os seguintes sites da MSDN:
Solução de problemas Erro 601
http://msdn2.microsoft.com/en-us/library/aa258726(SQL.80).aspx
DEFINIR NÍVEL DE ISOLAMENTO DE TRANSAÇÃO
http://msdn2.microsoft.com/en-us/library/aa259216(SQL.80).aspx

Propriedades

ID do artigo: 815008 - Última revisão: sexta-feira, 2 de novembro de 2007 - Revisão: 6.6
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Palavras-chave: 
kbmt kbhotfixserver kbqfe kbsqlserv2000presp4fix kbbug kberrmsg kbfix KB815008 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 815008

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