MSSQLSERVER_824
Se aplica a: SQL Server
Detalles
Attribute | Valor |
---|---|
Nombre del producto | SQL Server |
Id. de evento | 824 |
Origen de eventos | MSSQLSERVER |
Componente | SQLEngine |
Nombre simbólico | B_HARDSSERR |
Texto del mensaje | SQL Server detectó un error de E/S de coherencia lógico: %ls. Ocurrió durante %S_MSG de la página %S_PGID en la base de datos con id. %d, desplazamiento %#016I64x, archivo '%ls'. El registro de errores de SQL Server o el registro de errores del sistema operativo pueden contener mensajes adicionales con más detalles. Se trata de una condición de error grave que amenaza la integridad de la base de datos y que se debe corregir de inmediato. Realice una comprobación completa de coherencia de la base de datos (DBCC CHECKDB). Este error puede deberse a muchos factores. Para obtener más información consulte https://go.microsoft.com/fwlink/?linkid=2252374. |
Síntoma
Es posible que aparezca el mensaje de error siguiente en el registro de errores de SQL Server o en el de eventos de aplicación de Windows si se produce un error en una comprobación de coherencia lógica después de leer o escribir una página de base de datos:
2022-11-02 15:46:42.90 spid51 Error: 824, Severity: 24, State: 2.
2022-11-02 15:46:42.90 spid51 SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 1:43686; actual 0:0). It occurred during a read of page (1:43686) in database ID 23 at offset 0x0000001554c000 in file 'H:\MSSQL16.MSSQLSERVER\MSSQL\DATA\my_db.mdf'. Additional messages in the SQL Server error log or operating system error log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see https://go.microsoft.com/fwlink/?linkid=2252374.
Si una consulta SELECT o DML se ejecuta en este mensaje, se devuelve el mensaje de error a la aplicación y se finaliza la conexión de la base de datos.
Causa
Este error indica que Windows informa de que la página se lee correctamente desde el disco, pero SQL Server detectó algún problema en ella. Este error es similar al error 823, solo que Windows no detectó el error. El error 824 normalmente indica un problema en el subsistema de E/S, como errores en la unidad de disco, problemas de firmware, controladores de dispositivo defectuosos, etc. Para obtener más información sobre los errores de E/S, vea el capítulo 2 del documento sobre conceptos básicos de E/S de Microsoft SQL Server.
SQL Server usa las siguientes API de Windows para realizar las operaciones de E/S: ReadFile
, WriteFile
, ReadFileScatter
y WriteFileGather
. Después de realizar estas operaciones de E/S, SQL Server busca condiciones de error asociadas a estas llamadas API. Si se produce un error del sistema operativo en estas llamadas API, SQL Server notifica el error 823. Puede haber situaciones en las que la llamada API de Windows realmente sea correcta, pero que los datos transferidos por la operación de E/S hayan detectado un problema de coherencia lógica. Estos problemas de coherencia lógica se notifican a través del error 824.
El error 824 contiene la información siguiente:
- El archivo de base de datos en el que se realiza la operación de E/S.
- El desplazamiento con el archivo donde se ha intentado la operación de E/S.
- La base de datos a la que pertenece este archivo.
- El número de página implicado en la operación de E/S.
- Si era una operación de lectura o escritura.
- Detalles sobre la comprobación de coherencia lógica en la que se ha producido el error (el tipo de comprobación, el valor real y el valor esperado usados para esta comprobación).
Estas comprobaciones de coherencia lógica son comprobaciones de integridad que SQL Server realiza para asegurarse de que determinados elementos clave de los datos que intervienen en la transferencia de E/S se han mantenido intactos durante la operación de E/S. Las comprobaciones incluyen las de suma de comprobación, página rasgada, transferencia corta, id. de página incorrecto, lectura obsoleta y error de auditoría de página. La naturaleza de las comprobaciones realizadas varía en función de las distintas opciones de configuración en el nivel de base de datos y de servidor.
El mensaje de error 824 suele indicar que hay un problema con el sistema de almacenamiento subyacente, el hardware o un controlador que se encuentra en la ruta de acceso de la solicitud de E/S. Este error puede producirse si hay incoherencias en el sistema de archivos o si el archivo de base de datos está dañado.
Solución
Si se produce el error 824, puede probar las siguientes soluciones:
Revise la tabla suspect_pages de
msdb
para comprobar si otras páginas (en la misma base de datos o en otras) tienen este problema.SELECT * FROM msdb..suspect_pages WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
Compruebe la coherencia de las bases de datos ubicadas en el mismo volumen (como el que se indica en el mensaje 824) mediante el comando DBCC CHECKDB. Si detecta incoherencias en el comando
DBCC CHECKDB
, use las instrucciones del artículo de Knowledge Base Cómo solucionar los errores de coherencia de la base de datos indicados por DBCC CHECKDB.DBCC CHECKDB;
Si la base de datos que encuentra estos errores 824 no tiene activada la opción de base de datos
PAGE_VERIFY CHECKSUM
, hágalo de inmediato. Los errores 824 se pueden producir por otros motivos que no sean un error de suma de comprobación, pero CHECKSUM proporciona la mejor opción para comprobar la coherencia de la página después de que se haya escrito en el disco. Use este script para identificar las bases de datos en las que la opción CHECKSUM no está habilitada:SELECT * FROM sys.databases WHERE page_verify_option_desc != 'CHECKSUM';
Revise los registros de eventos de Windows para ver si hay errores o mensajes notificados desde el sistema operativo, un dispositivo de almacenamiento o un controlador de dispositivo. Si están relacionados con este error de alguna manera, debe solucionar esos errores primero. Por ejemplo, aparte del mensaje 824, también puede observar un evento como "El controlador ha detectado un error de controlador en \Device\Harddisk4\DR4" notificado por el disco en el registro de eventos. En ese caso, tiene que evaluar si este archivo está presente en este dispositivo y luego corregir esos errores de disco en primer lugar.
Use la utilidad SQLIOSim para averiguar si estos errores 824 se pueden reproducir fuera de las solicitudes normales de E/S de SQL Server. La utilidad SQLIOSim se incluye en SQL Server 2008 (10.0.x) y versiones posteriores, por lo que no hay necesidad de una descarga independiente.
Consulte al proveedor de hardware o al fabricante del dispositivo para asegurarse de que:
- Los dispositivos de hardware y la configuración se ajustan a los requisitos de E/S de SQL Server.
- Los controladores de dispositivo y otros componentes de software complementarios de todos los dispositivos de la ruta de acceso de E/S están actualizados.
Si el fabricante del dispositivo o el proveedor de hardware le han proporcionado alguna utilidad de diagnóstico, úsela para evaluar el estado del sistema de E/S.
Evalúe si hay controladores de filtro en la ruta de acceso de estas solicitudes de E/S. Puede ejecutar los siguientes comandos para enumerar todos los controladores de filtro del sistema:
fltmc filters fltmc instances
- Excluya los archivos de base de datos y de registro del examen de estos controladores de filtro. Para obtener más información, consulte Directorios y extensiones de nombre de archivo para excluir del examen de virus
- Compruebe si hay alguna actualización para estos controladores de filtro
- Puede quitar o deshabilitar estos controladores de filtro para observar si desaparece el problema que genera el error 824.
Si ejecuta una máquina virtual, asegúrese de que todos los controladores de virtualización se actualizan o comprueban con el proveedor de virtualización para obtener más información.
Si el problema no está relacionado con el hardware y tiene una copia de seguridad limpia disponible, úsela para restaurar la base de datos.