Esta serie de blogs incluye T-SQL y DMV que pueden ser utilizadas para detectar problemas de rendimiento de SQL Server y su posible solución.

 

SQL Server 2008 incluye el system_health que es un XEvent que nos ayuda a realizar resolución de problemas de desempeño del motor de SQL Server. Si queremos ver que este está ejecución, corremos el siguiente comando:

 

select * from sys.dm_xe_sessions

image

 

Si queremos ver los resultados de este XEvent ejecutamos el siguiente T-SQL

 

select CAST(xet.target_data as xml) 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’

 

 

Esto T-SQL nos dará el resultado en formato XML con al información correspondiente.

 

image

 

Si abrimos ese XML veremos algo parecido a lo siguiente

image

 

Si el motor de SQL Server está teniendo problemas, entonces podemos revisar ese XML que contiene entre otras cosas lo siguiente:

 

  • El sql_text y session_id para cualquier sesión con error de severidad >=20
  • El sql_text y session_id para cualquier sesión con error de memoria tales como  17803, 701, etc 
  • Cualquier registro de "non-yielding problems” por ejemplo errores in tales como Msg 17883
  • La callstack, sql_text, y session_id de cualquier sesción que haya esperado por "external waits” o "pre-emptive waits".
  • La callstack, sql_text, y session_id de cualquier sesción que tenga esperas en “latches” mayor a 15 segundos
  • The callstack, sql_text, and session_id for any sessions who have waited on locks for > 30 seconds
  • The callstack, sql_text, and session_id for any session that have waited for an extended period of time for "external" waits or "pre-emptive waits".

 

 

Saludos,

Ing. Eduardo Castro Martínez

http://comunidadwindows.org

http://ecastrom.blogspot.com