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

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): 826433
Síntomas
Si la causa de problemas de hardware, controlador o sistema operativo perdido escribe condiciones o las condiciones de lectura obsoletas, puede ver mensajes de error relacionados con la integridad de 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 intenta obtener la página lógica (1:7040966) en la base de datos 'pubs' pertenece al objeto 'autores', no '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 el registro (63361:16876:181), para el identificador 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 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 el desplazamiento 0x00000016774000 en el archivo 'h:\sql\MSSQL\data\tempdb.mdf'.

Error de spid17s de 15:57:24.14 de 2010-02-06: 3456, gravedad: 21, estado: 1.
spid17s de 15:57:24.14 de 2010-02-06 no pudo rehacer el registro (58997:5252:28), para el identificador de transacción (0:109000187), en la página (1:480946), base de datos (database ID 17) ' MiBaseDeDatos'. Página: LSN = (58997:5234:17), tipo = 3. Registro: el código de operación = 2, contexto 5, 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
Microsoft presentó las capacidades de seguimiento extendido a partir de SQL Server 2000 Service Pack 4 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 entrada-salida y solucionar problemas de los mensajes de error que se describe en la sección "Síntomas"

Si aparece alguno de los mensajes de error que se mencionan en la sección "Síntomas" y no pueden explicarse con un evento como un error de disco físico, 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:
  • Escritura perdida: Una llamada correcta a la API WriteFile , pero el sistema operativo, un controlador o la cachingcontroller no realiza correctamente el vaciado los datos a la thoughSQL de medios físicos incluso Server se informa que la operación de escritura tuvo éxito.
  • Lectura obsoleto: Una llamada correcta a la API ReadFile , pero el sistema operativo, un controlador o la cachingcontroller devuelve incorrectamente una versión anterior de los datos.
Por ejemplo, Microsoft ha confirmado que los escenarios donde una llamada WriteFile API devuelve como correcta, pero una lectura correcta, de inmediata del mismo bloque de datos devuelve los datos más antiguos, incluidos los datos que es probable que se almacenan 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 los 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)

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, incluyendo no ordenar y operaciones de E/s de archivo de trabajo. Cuando se producen errores, como el Error 605, 823 u 3448, valor de (LSN) del número de secuencia de registro del búfer de entrada se compara con la lista reciente de escritura. Si el LSN recuperados durante la operación de lectura es anterior a la especificada durante la operación de escritura, se registra un nuevo mensaje de error 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 y 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 el almacenamiento en caché de los mecanismos para corregir el problema

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

SQL Server ha detectado un error de E/S basada en la coherencia lógico: lectura obsoletos. Se produjo durante un <Read rite="">> de página <PAGEID>> en el identificador de base de datos <DBID>> en desplazamiento <PHYSICAL offset="">> en archivo <FILE name="">&gt;. Otros mensajes en el registro de sucesos de SQL Server error log o el sistema 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. Realizar una comprobación de coherencia de la 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.</FILE> </PHYSICAL> </DBID> </PAGEID> </Read>

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

Si 3448 de Error se produce al intentar 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 principales detalles sobre el encabezado de página 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:
  • Se devuelven si los archivos de base de datos se cierran y, a continuación, abre, correcto y más recientemente se escriben datos durante la recuperación.
  • Cuando se emite un punto de control y ejecute la instrucción DBCC DROPCLEANBUFFERS (para quitar todas las páginas de base de datos de la memoria), y luego ejecutar la instrucción DBCC CHECKDB en la base de datos, la searegresado de datos escrito más recientemente.
Los comportamientos mencionados en el párrafo anterior indican un problema de almacenamiento en caché de lectura y con frecuencia se solucionan deshabilitando la lectura de memoria caché. Las acciones que se describen en el párrafo anterior normalmente forzar una invalidación de la caché y las lecturas de éxito 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 aún 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 el software, incluido el software antivirus y utilidades de copia de seguridad 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 de 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 consistencia de datos, como errores de clave externas o las entradas que faltan datos. El siguiente mensaje de error muestra un ejemplo de esta condición:

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

Algunos escenarios se describen con más detalle en las siguientes listas:
  • LSN Sequence		Action1			Checkpoint2			Begin Transaction3			Table created or truncated4			Inserts (Pages allocated)5			Newly allocated page written to disk by Lazy Writer6			Select from table – Scans IAM chain, newly allocated page read back from disk (LRU | HASHED = 0x9 in getpage message), encounters Error 605 - Invalid Object ID7			Rollback of transaction initiated
  • LSN Sequence		Action1			Checkpoint2			Begin Transaction3			Page Modification4			Page written to disk by Lazy Writer5			Page read in for another modification (stale image returned)6			Page Modified for a second time but because of stale image does not see first modification 7			Rollback – Fails – Transaction Log shows two different log records with the same PREV LSN for the page
Los operadores de 'Tipo' de SQL Server realizan las actividades de E/S, principalmente desde y hacia la base de datos tempdb . Estas operaciones de E/S 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 tratar de resolver problemas similares. Los diagnósticos adicionales explicados en este artículo no se aplican a estas operaciones.

Microsoft ha observado que la causa principal para la siguiente clase lee errores es generalmente una lectura obsoletos o pérdida de escribir:

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 &gt; 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 = programa\Microsoft de e:\Program 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 el desplazamiento 0x000000027d2000 en el archivo 'e:\program de programa\Microsoft SQL Server\mssql\data\tempdb.mdf'.

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

</p:\sql\ntdbms\storeng\drs\include\record.inl>
Los clientes que han experimentado estos errores de ordenación con frecuencia han solucionado los problemas al mover tempdb a una unidad local no almacenar en caché, o al deshabilitar los mecanismos de almacenamiento en caché de lectura.

Debido a que una lectura obsoleta o una escritura perdida 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 se encontró la entrada de índice de RID ' %. * hs' en el índice de página % S_PGID, ID. 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 el ID (%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. Tal vez la página iba a vincularse 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 con la desactivación de 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 E/S de SQL Server más reciente. Microsoft recomienda encarecidamente 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 el diagnóstico extendido indica un posible obsoleto lectura o perdido escribir condición, póngase en contacto con su proveedor de hardware para seguimiento inmediato arriba y probar con la SQLIOSim utilidad.

SQL Server requiere sistemas con entrega garantizada a medios estables, tal como se describe en elRequisitos del programa de confiabilidad de E/S de SQL Server. 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 Requisitos de entrada/salida de motor base de datos de Microsoft SQL Server.

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 826433 - Última revisión: 06/04/2015 06:46:00 - Revisión: 2.0

Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2005 Compact Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Analysis Services, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Express with Advanced Services, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Standard Edition for Small Business, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, SQL Server 2012 Enterprise Core, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, SQL Server 2014 Reporting Services

  • kbhotfixserver kbqfe kbbug kbhardware kbfilter kbdriver kbdatabase kbsysadmin kbinfo kbmt KB826433 KbMtes
Comentarios