SQL Server se agregaron diagnósticos para detectar problemas de E/S denunciaron debido a obsoletas lecturas o escrituras perdidas

Se aplica: Microsoft SQL Server 2005 Compact EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise Edition

Síntomas


Si la causa de problemas de hardware, controlador o sistema operativo perdió escribe condiciones o las condiciones de lectura obsoletas, puede ver mensajes de error relacionados con la integridad de los datos como errores 605, 823, 3448, 3456. Puede recibir mensajes de error similares a los siguientes ejemplos:

2003-07-24 16:43:04.57 spid63 Getpage: bstat = 0 x 9, sstat = 0 x 800, caché
2003-07-24 16:43:04.57 spid63 pageno es/debe ser: objid es/debe ser:
2003-07-24 16:43:04.57 spid63 (1:7040966)/(1:7040966) 2093354622/2039782424

2003-07-24 16:43:04.57 spid63... IAM indica que la página está asignada a este objeto

2003-07-24 16:52:37.67 spid63 Error: 605, gravedad: 21, estado: 1
2003-07-24 16:52:37.67 spid63 intento de recuperación página lógica (1:7040966) en la base de datos 'pubs' pertenece al objeto 'authors', no para 'titles' de objeto..

2003-07-24 16:52:40.99 spid63 Error: 3448, gravedad: 21, estado: 1
2003-07-24 16:52:40.99 spid63 no se puede deshacer (63361:16876:181), la entrada de registro para el ID de transacción (0:159696956), en la página (1:7040977), base de datos 'pubs' (database ID 12). Información de página: LSN = (63192:958360:10), tipo = 2. Registrar la información: código de operación = 2, contexto 1..

2003-07-09 14:31:35.92 spid66 Error: 823, gravedad: 24, estado: 2
2003-07-09 14:31:35.92 spid66 error de E/S (Id. de página errónea) detectado durante la lectura en desplazamiento 0x00000016774000 en el archivo 'h:\sql\MSSQL\data\tempdb.mdf'..

2010-02-06 15:57:24.14 spid17s Error: 3456, gravedad: 21, estado: 1.
2010-02-06 15:57:24.14 spid17s no pudo rehacer (58997:5252:28), la entrada de registro para la ID de transacción (0:109000187), en la página (1:480946), base de datos 'MiBaseDeDatos' (database Id. 17). Página: LSN de = (58997:5234:17), tipo = 3. Registro: OpCode = 2, 5, de contexto PrevPageLSN: (58997:5243:17). Restaurar desde una copia de seguridad de la base de datos o reparar la base de datos.

Más información


Capacidades de seguimiento extendido a partir de SQL Server 2000 Service Pack 4, Microsoft presentó y estos diagnósticos han formado parte del producto de SQL Server 2005 y versiones posteriores. Estas capacidades están diseñadas para ayudar a detectar problemas externos relacionados con la E/S y solucionar los mensajes de error descritos en la sección "Síntomas"

Si recibe alguno de los mensajes de error que se mencionan en la sección "Síntomas" y no pueden explicarse por un suceso como un error de unidad física, revisar cualquier problema conocido con SQL Server, el sistema operativo, los controladores y el hardware. Pruebe los diagnósticos proporcionar información acerca de las dos condiciones siguientes:
  • Pérdida de escritura: Una llamada correcta a la API WriteFile , pero el sistema operativo, un controlador o el controlador de almacenamiento en caché no correctamente vaciar los datos en el medio físico aunque SQL Server se le informará de que la escritura tuvo éxito.
  • Lectura obsoleto: Una llamada correcta a la API ReadFile , pero el sistema operativo, un controlador o la controladora de caché devuelve incorrectamente una versión anterior de los datos.
Por ejemplo, Microsoft ha confirmado que los escenarios donde una llamada de WriteFile API devuelve como correcta, pero una lectura correcta, de inmediata del mismo bloque de datos devuelve los datos anteriores, incluidos los que es probable que se almacena en una memoria caché de lectura de hardware. A veces, este problema se produce debido a un problema de lectura de memoria caché. En otros casos, los datos de escritura se escriben nunca realmente en el disco físico.

Para habilitar diagnósticos adicionales para estos tipos de problemas, SQL Server ha agregado el indicador de traza 818. Como parámetro de inicio, puede especificar el indicador de traza 818-T818, para el equipo que está ejecutando SQL Server, o bien puede ejecutar la siguiente instrucción:
DBCC TRACEON(818, -1)

El indicador de traza 818 permite un búfer de anillo en memoria que se utiliza para realizar un seguimiento que del último 2.048 correcta escribir las operaciones realizadas por el equipo que ejecuta SQL Server, sin incluir la ordenación y las operaciones de E/s de archivo de trabajo. Cuando se producen errores, como el Error 605, 823 ó 3448, valor de número (LSN) de secuencia de registro del búfer de entrada se compara con la lista de escritura reciente. Si el LSN que se recupera durante la operación de lectura es anterior a la especificada durante la operación de escritura, un nuevo mensaje de error se registra en el registro de errores de SQL Server. La mayoría de las operaciones de escritura de SQL Server aparecen como puntos de comprobación o como escrituras diferidas. Una escritura diferida es una tarea en segundo plano que utiliza E/S asincrónica. La implementación de la memoria intermedia circular es ligera, con lo que el rendimiento afectan en el sistema insignificante.

El siguiente mensaje indica que SQL Server no recibió un error de la llamada a la API WriteFile o la llamada a ReadFile API. Sin embargo, cuando se revisó el LSN, el valor no era correcto:

SQL Server ha detectado un nivel de sistema operativo/hardware denunciaron lee o escribe el problema en la página (1:75007) de la base de datos de 12

LSN devuelto (63361:16876:181), LSN esperado (63361:16876:500)

Póngase en contacto con el fabricante del hardware y considere la posibilidad de deshabilitar los mecanismos de almacenamiento en caché para corregir el problema

A partir de SQL Server 2005, el mensaje de error se declara como:

SQL Server detecta un error de E/S basado en la coherencia lógico: lectura obsoletos. Ha producido durante la << de lectura y escritura >> de página << PAGEID >> en el identificador de base de datos << DBID >> en el desplazamiento << contrapartida física >> en el archivo << nombre de archivo >>. Mensajes adicionales en el registro de sucesos de sistema o registro de error de SQL Server pueden proporcionar más detalles. Se trata de una condición de error grave que amenaza la integridad de la base de datos y debe corregirse inmediatamente. Completar una comprobación de coherencia de base de datos completa (DBCC CHECKDB). Este error puede deberse a varios factores; Para obtener más información, consulte los libros en pantalla de SQL Server.

En este punto, la lectura de memoria caché contiene una versión anterior de la página, o los datos no se escribieron correctamente en el disco físico. En ambos casos (escribir una pérdida o una lectura obsoletos), SQL Server informa de un problema con el sistema operativo, el controlador o los niveles de hardware externo.

Si 3448 de Error se produce cuando intenta deshacer una transacción que tiene el Error 605 o Error 823, el equipo que ejecuta SQL Server automáticamente cierra la base de datos y se intenta abrir y recuperar la base de datos. La primera página que experimenta el Error 605 o Error 823 se considera una página errónea y el identificador de página es mantenido por el equipo que ejecuta SQL Server. Durante la recuperación (antes de la fase redo) cuando se lee el identificador de página incorrecto, los detalles sobre el encabezado de la página principales se registran en el registro de errores de SQL Server. Esta acción es importante porque ayuda a distinguir entre escenarios perdido Write y Read obsoletos.

Puede ver los siguientes dos comportamientos comunes en escenarios de lectura obsoletos:
Los comportamientos mencionados en el párrafo anterior indican un problema de almacenamiento en caché de lectura y con frecuencia se solucionan deshabilitando la memoria caché de lectura. Las acciones que se describen en el párrafo anterior normalmente forzar una invalidación de la caché y las lecturas correcta que se producen a mostrar que el medio físico se ha actualizado correctamente. El comportamiento perdido escribir se produce cuando la página que está leyendo sigue siendo la versión anterior de los datos, incluso después de un vaciado forzoso de los mecanismos de almacenamiento en caché.

A veces, el problema puede no ser específico de una caché de hardware. Puede ser un problema con un controlador de filtro. En tales casos, revise su software, incluyendo utilidades de copia de seguridad y antivirus y, a continuación, vea si hay problemas con el controlador de filtro.

Microsoft también ha observado las condiciones que no cumplen los criterios para el Error 605 o Error 823 pero son causadas por la misma actividad de lectura obsoletos o pérdida de escritura. En algunos casos, aparece una página que se actualiza dos veces pero con el LSN mismo valor. Este comportamiento puede producirse si el Identificador de objeto y el Identificador de página son correcto (página ya asignado al objeto) y un cambio realizado en la página y se vacían en el disco. La recuperación de la página siguiente devuelve una imagen anterior y, a continuación, se realiza un segundo cambio. El registro de transacciones de SQL Server muestra que la página se actualiza dos veces con el mismo valor LSN. Esta acción se convierte en un problema cuando intenta restaurar una secuencia de registro de transacciones o con problemas de coherencia de datos, como errores de clave externas o las entradas de datos que faltan. El mensaje de error siguiente muestra un ejemplo de esta condición:

Error: 3456, gravedad: 21, estado: 1 no pudo rehacer (276666:1664:19), la entrada de registro para el ID de transacción (0:825853240), en la página (1:1787100), la base de datos 'authors' (7). Página: LSN de = (276658:4501:9), tipo = 1. Registro: OpCode = 4, 2, de contexto PrevPageLSN: (275565:3959:31)..

Algunos escenarios se describen con más detalle en las siguientes listas:
  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Table created or truncated
    4Inserts (Pages allocated)
    5Newly allocated page written to disk by Lazy Writer
    6Select from table – Scans IAM chain, newly allocated page read back from disk (LRU | HASHED = 0x9 in getpage message), encounters Error 605 - Invalid Object ID
    7Rollback of transaction initiated

  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Page Modification
    4Page written to disk by Lazy Writer
    5Page read in for another modification (stale image returned)
    6Page Modified for a second time but because of stale image does not see first modification
    7Rollback – Fails – Transaction Log shows two different log records with the same PREV LSN for the page

Operadores de ordenación' SQL Server ' realizan actividades de i/OS, principalmente a y desde la base de datos tempdb . Estas operaciones de i/OS son similares a las operaciones de E/S de búfer; Sin embargo, ya se han diseñado para utilizar lógica de reintento de lectura para intentar resolver problemas similares. Los diagnósticos adicionales que se explican en este artículo no se aplican a estas operaciones.

Microsoft ha observado que la causa principal para la siguiente ordenación lee errores suele ser una lectura obsoletos o una escritura perdidos:

2003-04-01 20:13:31.38 spid122 SQL Server aserción: archivo: < p:\sql\ntdbms\storeng\drs\include\record.inl >, línea = 1447 error de aserción = ' m_SizeRec > 0 & & m_SizeRec < = MAXDATAROW'.

2003-03-29 09:51:41.12 spid57 ordenar lee error (Id. de página errónea). PageID = (0x1:0x13e9), dbid = 2, archivo = e:\program de programa\Microsoft SQL Server\mssql\data\tempdb.mdf. Reintentando.

2003-03-29 09:51:41.13 spid57 Error: 823, gravedad: 24, estado: 7
error de E/S de 2003-03-29 09:51:41.13 spid57 (Id. de página errónea) detectado durante la lectura en desplazamiento 0x000000027d2000 en el archivo 'e:\program de programa\Microsoft SQL Server\mssql\data\tempdb.mdf'..

* Module(sqlservr+00531097) 00931097 (utassert_fail + 000002E3)
* 005B1DA8 Module(sqlservr+001B1DA8) (RecBase::Resize+00000091)
* 00407EE7 Module(sqlservr+00007EE7) (RecBase::LocateColumn+00000012)
* Module(sqlservr+00452520) 00852520 (mergerow + 000000A4)
* 008522B3 Module(sqlservr+004522B3) (merge_getnext+00000285)
* 0085207D Module(sqlservr+0045207D) (mergenext+0000000D)
* 004FC5FB Module(sqlservr+000FC5FB) (getsorted+00000021)

Los clientes que han experimentado estos errores de ordenación con frecuencia han solucionado los problemas al mover tempdb a una unidad local sin almacenamiento en caché o deshabilitando los mecanismos de almacenamiento en caché de lectura.

Porque una lectura obsoleta o una escritura pierden resultados en el almacenamiento de datos que no se esperaba, puede producirse una gran variedad de comportamientos. Puede aparecer como datos que faltan, pero algunos de los efectos más comunes de los datos que faltan aparecen como daños en el índice, como Error 644 o Error 625:

Error 644 gravedad nivel 21 mensaje de texto no encontró la entrada de índice para RID ' %. * hs' en el índice de página % S_PGID, identificador de índice %d, la base de datos ' %. * ls'.

Texto del mensaje de error 625 gravedad nivel 21 no puede recuperar la fila de la página % S_PGID por RID porque lo RanuraID (%d) no es válido.

Algunos clientes han informado que faltan filas después de que realizan actividades de recuento de filas. Este problema se produce debido a una operación de escritura pierde. Quizás la página debía estar vinculado a la cadena de páginas de índice agrupado. Si la escritura se perdió físicamente, los datos también se pierde.

Importante: Si experimenta alguno de los comportamientos o si sospecha de problemas similares, así como deshabilitar los mecanismos de almacenamiento en caché, Microsoft le recomienda que obtenga la actualización más reciente para SQL Server y el simulador de carga de i/OS de SQL Server más reciente. Microsoft también recomienda que realice una revisión estricta de su sistema operativo y su configuración asociada.

Nota: Microsoft ha confirmado que en raras y pesadas cargas de I/O, algunas plataformas de hardware pueden devolver una lectura obsoleta. Si los diagnósticos extendidos indican un posible obsoleto lectura/pérdida escribir condición, póngase en contacto con su proveedor de hardware para su seguimiento inmediato de y probar con la utilidad SQLIOSim .

SQL Server requiere sistemas para soportar la entrega garantizada a medios estables tal como se indica en los Requisitos del programa de confiabilidad de SQL Server i/OS. Para obtener más información acerca de los requisitos de entrada y salidos para el motor de base de datos de SQL Server, consulte los Requisitos de entrada y salida de motor de base de datos de Microsoft SQL Server.