Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Cuando el motor de base de datos de SQL Server muestra un error, la gravedad del error indica el tipo de problema detectado por SQL Server.
Niveles de gravedad
En la siguiente tabla se enumeran y describen los niveles de gravedad de los errores mostrados por el motor de base de datos de SQL Server.
| Nivel de gravedad | Descripción |
|---|---|
| 0-9 | Indique mensajes informativos que devuelven información de estado o errores de informe que no son graves. El motor de base de datos no muestra errores del sistema con gravedades de 0 a 9. |
| 10 | Indica mensajes informativos que devuelven información de estado o errores de informe que no son graves. Por razones de compatibilidad, el motor de base de datos convierte la gravedad 10 en gravedad 0 antes de devolver la información de errores a la aplicación que hace la llamada. |
| 11-16 | Indica errores que pueden ser corregidos por el usuario. |
| 11 | Indica que un objeto o una entidad determinados no existen. |
| 12 | Una gravedad especial para consultas que no utilizan bloqueo debido a sugerencias de consulta especiales. En algunos casos, las operaciones de lectura realizadas por estas instrucciones podrían dar lugar a datos incoherentes porque no se toman bloqueos para garantizar la coherencia. |
| 13 | Indica errores de interbloqueo de transacciones. |
| 14 | Indica errores relacionados con la seguridad, como es el caso de permisos denegados. |
| 15 | Indica errores de sintaxis en el comando Transact-SQL. |
| 16 | Indica errores generales que pueden ser corregidos por el usuario. |
| 17-19 | Indica errores de software que no pueden ser corregidos por el usuario. Informe al administrador del sistema sobre el problema. |
| 17 | Indica que la instrucción ha hecho que SQL Server se quede sin recursos (como, por ejemplo, memoria, bloqueos o espacio en disco para la base de datos) o ha superado alguno de los límites establecidos por el administrador del sistema. |
| 18 | Indica un problema en el software del motor de base de datos, pero se completa la instrucción y se mantiene la conexión a la instancia del motor de base de datos. El administrador del sistema debe ser informado cada vez que se produce un mensaje con un nivel de gravedad 18. |
| 19 | Indica que se ha superado un límite del motor de base de datos no configurable y el proceso por lotes actual ha finalizado. Los mensajes de error con nivel de gravedad 19 o superior detienen la ejecución del lote actual. Los errores de nivel de gravedad 19 son poco frecuentes y deben ser corregidos por el administrador del sistema o por el proveedor principal de asistencia técnica. Póngase en contacto con el administrador del sistema cuando se produzca un mensaje con nivel de gravedad 19. Los mensajes de error con nivel de gravedad entre 19 y 25 se escriben en el registro de errores. |
| 20-24 | Indica problemas del sistema y son errores irrecuperables, lo que significa que la tarea Motor de base de datos que ejecuta una instrucción o lote ya no se está ejecutando. La tarea registra información sobre lo acontecido y, a continuación, finaliza. En la mayoría de los casos, la conexión de la aplicación a la instancia del motor de base de datos también podría finalizar. Si lo hace, dependiendo del problema, es posible que la aplicación no pueda volver a conectarse. Los mensajes de error de este intervalo pueden afectar a todos los procesos que acceden a los datos de la base de datos y pueden indicar que una base de datos o un objeto están dañados. Los mensajes de error con nivel de gravedad entre 19 y 24 se escriben en el registro de errores. |
| 20 | Indica que una instrucción encontró un problema. Dado que el problema solo afecta a la tarea actual, es probable que la propia base de datos esté dañada. |
| 21 | Indica que se ha encontrado un problema que afecta a todas las tareas de la base de datos actual, pero no es probable que la propia base de datos esté dañada. |
| 22 | Indica que la tabla o índice especificado en el mensaje ha sido dañado por un problema de software o hardware. Los errores de nivel de gravedad 22 se producen en raras ocasiones. Si se produce uno de ellos, ejecute DBCC CHECKDB para determinar si hay otros objetos de la base de datos dañados. Es posible que el problema se encuentre solo en la caché del búfer y no en el propio disco. Si es así, al reiniciar la instancia del motor de base de datos se corregirá el problema. Para seguir trabajando, debe volver a conectarse a la instancia del motor de base de datos. De lo contrario, use DBCC para reparar el problema. En algunos casos, es posible que tenga que restaurar la base de datos.Si reiniciar la instancia del motor de base de datos no corrige el problema, el problema está en el disco. A veces, al destruir el objeto especificado en el mensaje de error se resuelve el problema. Por ejemplo, si el mensaje le indica que la instancia del motor de base de datos ha encontrado una fila con longitud 0 en un índice no clúster, elimine el índice y vuelva a generarlo. |
| 23 | Indica que se sospecha de la integridad de toda la base de datos debido al daño causado por un problema de hardware o software. Los errores de nivel de gravedad 23 se producen en raras ocasiones. Si se produce alguno, ejecute DBCC CHECKDB para determinar la magnitud de los daños. Es posible que el problema se encuentre solo en la caché y no en el propio disco. Si es así, al reiniciar la instancia del motor de base de datos se corregirá el problema. Para seguir trabajando, debe volver a conectarse a la instancia del motor de base de datos. De lo contrario, use DBCC para reparar el problema. En algunos casos, es posible que tenga que restaurar la base de datos. |
| 24 | Indica un error en los medios. Es posible que el administrador del sistema tenga que restaurar la base de datos. Es posible que también tenga que llamar al proveedor de hardware. |
Gravedad de mensaje de error definida por el usuario
Puede usar sp_addmessage para agregar a la vista de catálogo sys.messages mensajes de error definidos por el usuario con niveles de gravedad de 1 a 25. Estos mensajes de error definidos por el usuario pueden ser utilizados por RAISERROR. Para obtener más información, consulte sp_addmessage.
RAISERROR se puede utilizar para generar los mensajes del error definidos por el usuario con la gravedad comprendida entre 1 y 25.
RAISERROR puede hacer referencia a un mensaje definido por el usuario almacenado en la vista de catálogo sys.messages, o bien puede generar un mensaje dinámicamente. Cuando RAISERROR usa un mensaje de error definido por el usuario en sys.messages cuando genera un error, la gravedad especificada por RAISERROR invalida la gravedad especificada en sys.messages. Para obtener más información, consulte RAISERROR.
Gravedad de error y TRY...CATCH
Una TRY...CATCH construcción detecta todos los errores de ejecución con una gravedad mayor que 10 que no finalizan la conexión de la base de datos.
Los errores con gravedad comprendidos entre 0 y 10 son mensajes informativos y no hacen que la ejecución salte desde el CATCH bloque de una TRY...CATCH construcción.
Los errores que finalizan la conexión de la base de datos, normalmente con una gravedad de 20 a 25, no se controlan mediante el CATCH bloque porque la ejecución se anula cuando finaliza la conexión.
Para obtener más información, consulte TRY... CATCH.
Recuperar la gravedad del error
La ERROR_SEVERITY función del sistema se puede usar para recuperar la gravedad del error que provocó la ejecución del CATCH bloque de una TRY...CATCH construcción.
ERROR_SEVERITY devuelve NULL si se llama fuera del ámbito de un CATCH bloque. Para obtener más información, consulte ERROR_SEVERITY.