Partekatu honen bidez:


Error 823 de MSSQLSERVER

Se aplica a:SQL Server

Detalles

Atributo Valor
Nombre del producto Servidor SQL
Id. de evento 823
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico B_HARDERR
Texto del mensaje El sistema operativo ha devuelto el error %ls en SQL Server durante %S_MSG en el desplazamiento %#016I64x del archivo '%ls'. Encontrará más detalles en los mensajes adicionales del registro de errores de SQL Server y el registro de eventos del sistema. Se trata de una condición de error grave de nivel de sistema que amenaza a la integridad de la base de datos y que debe corregirse inmediatamente. 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 vea los Libros en pantalla de SQL Server.

Explicación

SQL Server usa las API de Windows, como ReadFile, WriteFile, ReadFileScatter y WriteFileGather, para realizar operaciones de E/S de archivos. Una vez que SQL Server realiza estas operaciones de E/S, comprueba si hay condiciones de error asociadas a estas llamadas API. Si se produce un error en las llamadas API con un error de sistema operativo (SO), SQL Server notifica el error 823.

El mensaje del error 823 contiene la siguiente información:

  • Archivo de base de datos en el que se realizó la operación de E/S.

  • El desplazamiento en el archivo donde se ha intentado la operación de E/S. Este desplazamiento es el desplazamiento de bytes físico desde el inicio del archivo. Dividir este número en 8192 proporciona el número de página lógico que afecta el error.

  • Indica si la operación de E/S es una solicitud de lectura o escritura.

  • El código de error del sistema operativo y la descripción del error entre paréntesis.

Errores generados por el sistema operativo

Se produce un error de sistema operativo cuando una llamada a la API de Windows de lectura o escritura no se realiza correctamente y SQL Server encuentra un error de sistema operativo relacionado con la llamada a la API de Windows. El siguiente mensaje es un ejemplo de un error 823:

Error: 823, Severity: 24, State: 2.
The operating system returned error 1117 (The request could not be performed because of an I/O device error.) to SQL Server during a read at offset 0x0000002d460000 in file 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Errores generados por DBCC CHECKDB

Es posible que vea errores de la DBCC CHECKDB instrucción en la base de datos asociada al archivo en el mensaje de error. Puede ejecutar la DBCC CHECKDB instrucción cuando vea un error 823. Si la DBCC CHECKDB instrucción no notifica ningún error, es probable que tenga un problema intermitente del sistema o un problema de disco.

Puede ver más información de diagnóstico de errores 823 en el archivo de registro de errores de SQL Server mediante la marca de seguimiento 818. Para obtener más información, consulte Diagnósticos de SQL Server detecta problemas de E/S no notificados debido a lecturas obsoletas o escrituras perdidas.

Causa

El mensaje de error 823 suele indicar que hay un problema con el sistema de almacenamiento subyacente, o 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. Para una lectura de archivos, SQL Server reintenta la solicitud de lectura cuatro veces antes de que devuelva 823. Si la operación de reintento se realiza correctamente, la consulta no produce ningún error, pero el mensaje MSSQLSERVER_825 se escribe en errorLOG y registro de eventos.

Acción de usuario

  • Revise la tabla suspect_pages de msdb otras páginas que encuentran este problema (en la misma base de datos o en bases de datos diferentes).

  • Compruebe la coherencia de las bases de datos ubicadas en el mismo volumen (que la notificada en el mensaje 823) mediante el DBCC CHECKDB comando . Si encuentra incoherencias en el DBCC CHECKDB comando, use las instrucciones de Cómo solucionar errores de coherencia de la base de datos notificados por DBCC CHECKB.

  • Revise los registros de eventos de Windows para ver los 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, primero solucione esos errores. Por ejemplo, aparte del mensaje 823, también podría observar un evento como "El controlador detectó un error de controlador en \Device\Harddisk4\DR4" notificado por el origen de disco en el registro de eventos. En ese caso, debe evaluar si este archivo está presente en este dispositivo y, a continuación, corregir esos errores de disco.

  • Use la utilidad SQLIOSim para averiguar si estos errores 823 se pueden reproducir fuera de las solicitudes normales de E/S de SQL Server. La utilidad SQLIOSim se incluye con SQL Server 2008 y versiones posteriores, por lo que no es necesario realizar una descarga independiente. Normalmente se puede encontrar en la carpeta C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn.

  • Trabaje con su proveedor de hardware o fabricante de dispositivos para asegurarse de lo siguiente:

    • Los dispositivos de hardware y la configuración cumplen los requisitos de E/S de SQL Server.
    • Los controladores de dispositivo y otros componentes de software compatibles de todos los dispositivos de la ruta de acceso de E/S están actualizados.
  • Si el fabricante del hardware o del dispositivo le proporcionó cualquier utilidad de diagnóstico, úselos 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 que experimentan problemas.

    • Compruebe si hay actualizaciones de estos controladores de filtro.

    • ¿Puede quitar o deshabilitar estos controladores de filtro para observar si el problema que produce el error 823 desaparece?

Ejemplo con el error 21 del sistema operativo

En este caso, el error 21 del sistema operativo subyacente indica que el dispositivo de disco está sin conexión y no está disponible para que el sistema operativo y SQL Server lo usen.

Error: 823, Severity: 24, State: 2.
The operating system returned error 21 (The device is not ready.) to SQL Server during a read at offset 0x0000002d460000 in file 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Resolution

Si encuentra un escenario similar, solucione el error del sistema operativo subyacente. En este caso, trabaje con el administrador del sistema y el proveedor de hardware para asegurarse de que el dispositivo de disco está en línea y funciona correctamente. Asegúrese de que no haya errores ni daños notificados.

Una conexión de red inestable también puede provocar este error, por ejemplo, cuando los archivos de base de datos se almacenan en un almacenamiento conectado a la red (NAS) o un dispositivo SAN al que se accede a través de la red. En casos como este, es posible que tenga que comprobar la integridad física de las bases de datos una vez restaurado el dispositivo de disco mediante la ejecución de DBCC CHECKDB. Si se notifican daños en la base de datos, restaure una última copia de seguridad correcta conocida de la base de datos.