Estamos encontrándonos con un problema después de la instalación de SQL Server 2012 Service Pack 1.

 

Sintoma:

Después de instalar el Service Pack 1 de SQL Server 2012 uno o mas de los siguientes síntomas pueden aparecer:

El uso de CPU es casi del 100%, el consumidor principal de CPU es msiexec.exe

 

El archivo '%systemroot%\system32\config\SOFTWARE'  empieza a crecer de manera indefinida, se crean un montón de registros en las siguientes claves del registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots

o

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots

 

Los siguientes errores aparecen en el visor de eventos de aplicación:

1101 de “.NET Runtime Optimization”

1001 de “MSInstaller

 

Es imposible arrancar Management Studio, cada vez que se intenta iniciar el siguiente error aparece:

"Cannot find one or more componente. Please reinstall the application".

 

Causa:

Debido a un problema de firmado en algunos ensamblados el proceso de ngen intenta recompilar estos ensamblados de forma indefinida provocando los síntomas descritos.

 

Resolución:

1 – Parar la ejecución de ngen para evitar el uso de CPU y la generación de claves en el registro con los siguientes comandos:

%SystemRoot%\Microsoft.Net\Framework\v4.0.30319\ngen queue pause
%SystemRoot%\Microsoft.Net\Framework64\v4.0.30319\ngen queue pause

2 – Instalar el Cumulative Update 2 de SQL Server 2012 Service Pack 1: http://support.microsoft.com/kb/2790947

Esto instala los ensamblados correctos evitando la generación de nuevas claves en el registro

3 – Ejecutar los siguientes comandos para eliminar el exceso de claves en el registro:

- %SystemRoot%\Microsoft.Net\Framework\v4.0.30319\ngen eqi
- %SystemRoot%\Microsoft.Net\Framework64\v4.0.30319\ngen eqi

 

Información Adicional:

Si el registro de Windows a crecido de forma exagerada que hace que la máquina no rinda del todo bien deberemos compactar el registro, para ello:

1 – Arrancar Windows en modo reparación (F8 en el arranque)

2 – Abrir un línea de comandos

3 – Buscar la unidad donde está la instalación de Windows [drive] puedes encontrarla en el dialogo “System Recovery Options” Sustituir [drive] por esta unidad en las instrucciones.

4 – Navegar al directorio Windows\system32\config

[drive]:

cd [drive]:\Windows\System32\config

5 – Cargar la clave de registro SOFTWARE

reg load HKLM\Bloated SOFTWARE

6 – Start REGEDIT

7 – Click derecho en HKEY_LOCAL_MACHINE\Bloated y hacer clieck en export. Salvar el archivo como “Registry Hive File” en “[drive]:\Windows\system32\config\SOFTWARENew

8 – Cerrar REGEDIT, esto es necesario para evitar que REGEDIT bloquee el archivo SOFTWARE

9 – Descargar la rama Bloated del registro

reg unload HKLM\Bloated

10 – Renombrar [drive]:\Windows\system32\config\SOFTWARE a [drive]:\Windows\system32\config\SOFTWAREOld

11 - Renombrar [drive]:\Windows\system32\config\SOFTWARENew a [drive]:\Windows\system32\config\SOFTWARE

12 – Salir de la línea de comandos y reiniciar la máquina.

 

Notas

Podéis leer mas información sobre este problema aquí: http://support.microsoft.com/kb/2800050

Si el archivo '%systemroot%\system32\config\SOFTWARE'  ha alcanzado los 2GB y el sistema no arranca la mejor alternativa es reinstalar el sistema operativo.

Para cargar el registro en el modo reparación “REG LOAD” se necesita una cantidad importante de RAM, para un archivo SOFTWARE de 2GB se necesitan en torno a 8GB de RAM.

Pablo Gavela López – Ingeniero de Soporte de SQL Server