Uso de la sesión system_health

Se aplica a:SQL ServerAzure SQL Managed Instance

La sesión system_health es una sesión de Eventos extendidos que se incluye de forma predeterminada con SQL Server y Azure SQL Managed Instance. Esta sesión se inicia automáticamente cuando el motor de base de datos se inicia, y se ejecuta sin ninguna sobrecarga del rendimiento notable. La sesión recopila datos del sistema que se pueden utilizar para ayudar a solucionar problemas de rendimiento en el motor de base de datos.

Importante

Se recomienda no detener, alterar ni eliminar la sesión de system_health. Es posible que una actualización futura del producto sobrescribe cualquier cambio realizado en la configuración de sesión de system_health.

La sesión recopila información como la que se indica a continuación:

  • Los valores sql_text y session_id para las sesiones que encuentran un error cuya gravedad es >= 20.
  • Los valores sql_text y session_id para las sesiones que encuentran un error relacionado con la memoria. Entre los errores se incluyen 17803, 701, 802, 8645, 8651, 8657 y 8902.
  • Un registro de los problemas de un programador que no rinde. Estos aparecen en el registro de errores de SQL Server como error 17883.
  • Los interbloqueos que se detectan, incluido el gráfico de interbloqueo.
  • Los valores callstack, sql_text y session_id para las sesiones que han esperado en bloqueos temporales (u otros recursos interesantes) durante > 15 segundos.
  • Los valores callstack, sql_text y session_id para las sesiones que han esperado en bloqueos durante > 30 segundos.
  • Los valores callstack, sql_text y session_id para las sesiones que han esperado mucho tiempo esperas preferentes. La duración varía en función del tipo de espera. Una espera preferente es aquella en que SQL Server está esperando llamadas a API externas.
  • Los valores callstack y session_id para los errores de las asignaciones virtuales y de CLR.
  • Los eventos del búfer en anillo para el agente de memoria, el supervisor del programador, el OOM del nodo de memoria, la seguridad y la conectividad.
  • Resultados de componente del sistema de sp_server_diagnostics.
  • Estado de la instancia recopilado por scheduler_monitor_system_health_ring_buffer_recorded.
  • Errores en la asignación de CLR.
  • Errores de conectividad con connectivity_ring_buffer_recorded.
  • Errores de seguridad con security_error_ring_buffer_recorded.

Nota

Para obtener más información sobre los interbloqueos, consulte la guía de interbloqueos. Para obtener más información sobre los mensajes de error de SQL, consulta Eventos y errores del motor de base de datos.

Consultar los datos de la sesión system_health

En la sesión se usa tanto el destino del búfer en anillo como el del archivo de eventos para almacenar los datos. El destino de archivo de eventos está configurado con un tamaño máximo de 5 MB y una directiva de retención de archivo de cuatro archivos.

Para ver los datos de sesión del destino del búfer en anillo con la interfaz de usuario de Eventos extendidos disponible en SQL Management Studio, vea Visualización avanzada de datos de destino de Eventos extendidos en SQL Server: Observar datos en directo.

Para ver los datos de sesión del destino del búfer en anillo con Transact-SQL, use la consulta siguiente:

SELECT CAST(xet.target_data as xml) AS target_data
FROM sys.dm_xe_session_targets xet
JOIN sys.dm_xe_sessions xe
ON xe.address = xet.event_session_address
WHERE xe.name = 'system_health'

Para ver los datos de sesión del archivo de eventos, usa la interfaz de usuario de visor de eventos de Eventos extendidos disponible en SQL Server Management Studio. Para más información, consulta Ver datos de eventos en SQL Server Management Studio.

Restaurar la sesión system_health

Si eliminas la sesión system_health, puedes restaurarla si ejecutas el script u_tables.sql. Este archivo se encuentra en la siguiente carpeta, donde C: representa la unidad en la que se han instalado los archivos de programa de SQL Server y MSSQLnn la versión principal de SQL Server:

C:\Program Files\Microsoft SQL Server\MSSQLnn.\<instanceid>\MSSQL\Install

Ten en cuenta que después de restaurar la sesión, debes iniciarla con la instrucción ALTER EVENT SESSION o mediante el nodo Eventos extendidos del Explorador de objetos. De lo contrario, la sesión se iniciará automáticamente la próxima vez que se reinicie el servicio de SQL Server.

La sesión de system_health en Azure SQL

En Azure SQL Managed Instance, los datos de sesión system_health se pueden ver al hacer clic con el botón derecho en el destino event_file o ring_buffer en el Explorador de objetos y seleccionando Ver datos de destino.

No hay ninguna sesión de Eventos extendidos system_health integrada en Azure SQL Database, pero puedes usar la función sys.fn_xe_file_target_read_file() para leer desde sesiones de Eventos extendidos que crees y almacenes en Azure Storage. Para ver un tutorial, consulta Código de destino del archivo de evento para Eventos extendidos en Azure SQL Database.