REVISIÓN: Una consulta con nivel de aislamiento de transacción establecido en READ UNCOMMITTED produce error 601

Seleccione idioma Seleccione idioma
Id. de artículo: 815008 - Ver los productos a los que se aplica este artículo
Nº DE ERROR: 363988 (SHILOH_BUGS)
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando se ejecuta una consulta con su nivel de aislamiento de transacción establecido en READ UNCOMMITTED, SQL Server 2000 anula la consulta y devuelve el mensaje de error siguientes:

Servidor: Msg 601, nivel 12, estado 3, 14 de línea
No puede continuar la exploración con NOLOCK debido al movimiento de datos.

Causa

Este comportamiento puede producirse cuando se elimina una fila en una tabla entre la hora de que SQL Server lee la ubicación de la fila de un índice y la hora que SQL Server recopila la fila.

Solución

Información de Service Pack

Para resolver este problema, consiga el Service Pack más reciente para Microsoft SQL Server 2000. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
290211Cómo obtener el Service Pack más reciente de SQL Server 2000

Información de revisiones

La versión en inglés de este hotfix tiene los atributos de archivo (o atributos de último archivo) mostrados en la siguiente tabla. Las fechas y horas de estos archivos aparecen en hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria de la herramienta fecha y hora en el panel de control.
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     
				
Nota debido a las dependencias de archivos, la revisión o característica más reciente que contiene estos archivos quizás contenga también archivos adicionales.


Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".Este problema se corrigió por primera vez en Microsoft SQL Server 2000 Service Pack 4.

Más información

Después de instalar la revisión, puede utilizar el indicador de traza 9134 para cambiar el comportamiento de SQL Server. Para habilitar el indicador de traza 9134 de manera que está activado siempre que inicia SQL Server, agregar el indicador de traza como un parámetro de inicio de SQL Server. Para agregar el indicador de traza 9134 como un parámetro de inicio de SQL Server, siga estos pasos:
  1. En el Administrador corporativo de SQL Server, haga clic con el botón secundario del mouse en el servidor que ejecuta SQL Server y, a continuación, haga clic en Propiedades .
  2. En la ficha General , haga clic en Inicio parámetros .
  3. En el cuadro de texto del parámetro , escriba -T9134 , haga clic en Agregar y, a continuación, haga clic en Aceptar .
  4. En el SQL Server Properties(Configure) - < servidor nombre > diálogo cuadro, haga clic en Aceptar .
  5. Reiniciar el servicio para el nuevo parámetro surta efecto.
Como alternativa, puede ejecutar la consulta siguiente en el Analizador de consultas para activar dinámicamente el indicador de traza:
DBCC TRACEON (9134, -1)
sin embargo, si no agrega el indicador de traza 9134 como un parámetro de inicio, el efecto del comando DBCC TRACEON es pierde cuando se reinicia el servicio de SQL Server.

Cuando está activado el indicador de traza 9134 y se elimina una fila o se modifica entre la hora de que SQL Server lee la ubicación de la fila y la hora que recopila la fila a través de una búsqueda de marcador, la consulta no se anular o devolver el error 601. En su lugar, SQL Server pasa por alto la fila que no se encuentra y continúa buscar filas adicionales que cumplan los criterios de consulta. Por tanto, continúa la ejecución de consultas; sin embargo, los resultados que devuelve SQL Server no pueden incluir filas que se han eliminado o movido durante la ejecución de consulta.

Nota La información en este artículo y el seguimiento sólo se aplica indicador a una consulta que se ejecuta con el nivel de aislamiento de transacción se establece en READ UNCOMMITTED. La información no se aplica a una consulta que se ejecuta con la sugerencia del optimizador NOLOCK. En ese caso, el comportamiento sufre cambios respecto lo que se describe en la sección "Síntomas".

El indicador de traza no afecta al hecho de que pueden producirse otras incoherencias de datos y errores al leer datos sin confirmar. Para obtener más información acerca de los niveles de aislamiento admitidos por SQL Server y el efecto del uso de cada nivel de aislamiento, vea el tema "Bloqueo" en los libros en pantalla de SQL Server.

Microsoft no recomienda el uso de este indicador de traza a menos que se aplican los siguientes:
  • La aplicación en uso requiere un nivel de aislamiento UNCOMMITTED de lectura.
  • La aplicación en uso está experimentando un gran número de 601 errores.
  • Usted entiende que, cuando se utiliza el indicador de traza, se omiten las filas que se han eliminado o movido durante la ejecución de consulta.
Nota Antes de utilizar el nivel de aislamiento READ UNCOMMITTED, debe conocer su funcionalidad. Para obtener más información sobre el nivel de aislamiento UNCOMMITTED READ, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms171885.aspx

Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
235880INF: Optimizador sugerencia NOLOCK o nivel de aislamiento UNCOMMITTED READ genera el error 605
Para obtener más información, visite los siguientes sitios Web MSDN:
Solución de problemas Error 601
http://msdn2.microsoft.com/en-us/library/aa258726(SQL.80).aspx
CONJUNTO NIVEL DE AISLAMIENTO DE TRANSACCIÓN
http://msdn2.microsoft.com/en-us/library/aa259216(SQL.80).aspx

Propiedades

Id. de artículo: 815008 - Última revisión: viernes, 2 de noviembre de 2007 - Versión: 6.6
La información de este artículo se refiere 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
Palabras clave: 
kbmt kbhotfixserver kbqfe kbsqlserv2000presp4fix kbbug kberrmsg kbfix KB815008 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 815008

Enviar comentarios

 

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