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

Nº DE ERROR: 363988 (SHILOH_BUGS)

Síntomas

Cuando se ejecuta una consulta con su nivel de aislamiento definido en READ UNCOMMITTED, SQL Server 2000 anula la consulta y devuelve el siguiente mensaje de error:

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

Causa

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

Solución

Información del Service pack

Para resolver este problema, obtenga 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:
290211 cómo obtener el service pack más reciente para SQL Server 2000

Información de la revisión

La versión en inglés de esta revisión tiene los atributos de archivo (o atributos del archivo más reciente) mostrados en la tabla siguiente. Las fechas y horas de estos archivos se muestran en hora universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha zona horaria en la herramienta fecha y hora del Panel de Control.
DateTimeVersionSize File name
-----------------------------------------------------------------------------

07-Feb-200316:14 786,432 bytes Distmdl.ldf
07-Feb-200316:142,359,296 bytes Distmdl.mdf
29-Jan-200312:25 180 bytes Drop_repl_hotfix.sql
31-Jan-200311:022000.80.763.01,557,052 bytes Dtsui.dll
29-Jan-200315:48 746,470 bytes Instdist.sql
29-Jan-200312:25 1,402 bytes Inst_repl_hotfix.sql
07-Feb-200317:102000.80.765.0 90,692 bytes Msgprox.dll
29-Jan-200311:487.0.9466.0 344,064 bytes Msvcr70.dll
29-Jan-200311:482000.80.722.0 57,904 bytes Osql.exe
07-Feb-200314:23 1,065,895 bytes Replmerg.sql
07-Feb-200317:102000.80.765.0 221,768 bytes Replprov.dll
07-Feb-200317:102000.80.765.0 307,784 bytes Replrec.dll
29-Jan-200315:48 1,084,318 bytes Replsys.sql
29-Jan-200311:482000.80.534.0 127,548 bytes Sqdedev.dll
07-Feb-200317:102000.80.765.0 176,696 bytes Sqlmap70.dll
07-Feb-200317:102000.80.765.0 57,920 bytes Sqlrepss.dll
14-Feb-200313:222000.80.769.0 7,512,145 bytes Sqlservr.exe
29-Jan-200311:482000.80.194.0 180,290 bytes Sqlunirl.dll
07-Feb-200317:102000.80.765.0 45,644 bytes Sqlvdi.dll
07-Feb-200317:102000.80.765.0 82,492 bytes Ssnetlib.dll

Nota: Debido a la interdependencia entre archivos, la revisión o característica que contiene los archivos más recientes puede contener también archivos adicionales.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a". Este problema se corrigió primero 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 para que se activa cada vez que inicia SQL Server, agregue el indicador de traza como un parámetro de inicio de SQL Server. Para agregar el indicador de traza 9134 como parámetro de inicio de SQL Server, siga estos pasos:
  1. En el Administrador corporativo de SQL Server, haga clic en el servidor que está ejecutando SQL Server y, a continuación, haga clic en
    Propiedades.
  2. En la ficha General , haga clic en Parámetros de inicio.
  3. En el cuadro de texto del parámetro , escriba
    -T9134, haga clic en Agregary, a continuación, haga clic en
    OK.
  4. En el cuadro de diálogo SQL Server Properties(Configure) - <NombreDeServidor> , haga clic en Aceptar.
  5. Reinicie el servicio SQL Server para el nuevo parámetro surta efecto.
Como alternativa, puede ejecutar la consulta siguiente en el analizador de consultas de forma dinámica activa el indicador de traza:
DBCC TRACEON (9134, -1)
Sin embargo, si no agrega el indicador de traza 9134 como parámetro de inicio, se pierde el efecto del comando DBCC TRACEON cuando se reinicia el servicio de SQL Server.

Cuando está activado el indicador de traza 9134 y una fila se elimina o se modifica entre el momento en que SQL Server lee la ubicación de la fila y el momento en que recopila la fila a través de una búsqueda de marcador, la consulta no anular o devolver Error 601. En su lugar, SQL Server omite la fila que no se encuentra y continúa la digitalización de las filas adicionales que cumplan los criterios de consulta. Por lo tanto, continúa la ejecución de la consulta; Sin embargo, los resultados que devuelve SQL Server podrán no incluir filas que se han eliminado o movido durante la ejecución de la consulta.

Nota: La información de este artículo y el seguimiento de la marca sólo se aplica a una consulta que se ejecuta con el nivel de aislamiento definido 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 a lo que se describe en la sección "Síntomas".

Además, el indicador de traza no afecta el 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 "Locking" en libros en pantalla de SQL Server.

Microsoft no recomienda el uso de este indicador de traza a menos que se dan las siguientes condiciones:
  • La aplicación en uso requiere un nivel de aislamiento READ UNCOMMITTED.
  • La aplicación en uso está experimentando un gran número de 601 errores.
  • Usted entiende que al utilizar el indicador de traza, se omiten las filas que se han eliminado o movido durante la ejecución de la consulta.
Nota: Antes de utilizar el nivel de aislamiento READ UNCOMMITTED, debe conocer su funcionalidad. Para obtener más información acerca del nivel de aislamiento READ UNCOMMITTED, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):

Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
235880 INF: sugerencia del optimizador NOLOCK o aislamiento nivel READ UNCOMMITTED genera el Error 605
Para obtener más información, visite los siguientes sitios Web de MSDN:
Propiedades

Id. de artículo: 815008 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios