Contadores de SQL en Performance Monitor Perdido

Una vez en un cliente estaba entregando un servicio usando una herramienta que tomaba registros de rendimiento a través de los contadores de SQL de Performance Monitor, para mi sorpresa cuando fui a revisar la información no había nada. Entonces fui a revisar los contadores directamente en perfmon, los contadores para SQL Server no aparecían en la lista. Por eso decidí escribí este post para saber qué hacer cuando los contadores de SQL Server en el Performance Monitor desaparecen.

La manera más correcta y sencilla de recuperar dichos contadores seria haciendo una reparación de los binarios de SQL Server, a través de añadir y remover programas. Sin embargo esto requerirá downtime en la Instancia de SQL (si tienes un Clúster puedes hacer un swith-over al otro nodo).

Sin embargo existe otra opción, logre recuperar dichos contadores ejecutando los siguientes pasos:

Primero que nada abre la consola de línea de comandos con derechos administrativos.

Entra en el directorio BINN de la instancia de SQL Server que deseas corregir (Ejm: C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn)

Ahora para evitar cualquier inconsistencia vamos a eliminar cualquier rastro de los contadores con unlodctr MSSQLSERVER, para instancia nombradas use el formato MSSQL$NombreInstancia

 Ahora para cargar los contadores deberán usar el siguiente comando  lodctr perf-MSSQLSERVERsqlctr.ini, si estas usando una instancia nombrada el nombre tendrá el siguiente formato perf- MSSQL$NombreInstanciasqlctr.ini, deberás ejecutar el comando dos veces si quieres verificar que los contadores han sido añadidos

Luego deberán reiniciar los servicios de Remote Registry y Performance Logs & Alerts, usando los siguientes comandos:

net stop "Remote Registry"  &&  net start "Remote Registry"  

net stop "Performance Logs & Alerts"  &&  net start " Performance Logs & Alerts " 

Si estas usando el anterior procedimiento para recuperar los contadores en un Clúster de SQL Server, deberán reconstruir los contadores en ambos nodos físicos, y deberá existir una instancia activa de SQL este en ese nodo al momento de hacer la reconstrucción.

Si luego de esto no han aparecido los contadores de SQL en perfmon, deberán de revisar las llaves del registro (no es recomendable hacer ningún cambio a nivel del registro, ya que esto podría ocasionar inestabilidad en el sistema operativo. Si decide realizar dichos cambios debe de tener un respaldo del registro y Sistema operativo para recuperar en casos de algún problema), las siguientes llaves de registros deben existir y contener data una configuración valida.

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<<service name>>\Performance]

Library
Open
Collect
Close
PerfIniFile

También deberán de revisar si existe un llave llamada Disable Performance Counters dentro de la ruta HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib, y si su valor de configuración es 1, de ser así deberá configurarlo en 0. Esto te debería permitir la re-construcción de los artículos en el registro para los contadores y archivos de ayuda.

Ahora podría ser necesario o no el reconstruir lo contadores de SQL y/o sistema operativo, busca los contadores en el performance monitor, si no aparecen usa los pasos expuestos anteriormente para recrear los contadores de SQL, y el siguiente comando para reconstruir todos los contadores del sistema operativo.

cd %systemroot%\system32

lodctr /R

Otra Consideración que deben tomar en cuenta es el caso donde están ejecutando SQL 32 bits en un Ambiente Windows de 64 bits

Espero que este post te allá ayudado, recuerda que hay muchos otros post en nuestro blog que te pueden ayudar a tener una mejor visión de las características de SQL Server y como hacer troubleshooting de diferentes problemas. Hasta un próximo blog!

“Las opiniones e ideas expresadas en este blog son las de los Autores y no necesariamente declaran o reflejan la opinión de Microsoft”

Este material tambien lo podras acceder en https://blogs.technet.com/b/sql_pfe_latam/