Hoy ha salido la versión RTM de SQL Server 2014 y hoy he aprovechado para instalarla ya que curiosamente imparto la sesión de lanzamiento In-Memory OLTP en españa el próximo día 14 (a la que te recomiendo que asistas :)). Cual es mi sorpresa que me ha explotado diréctamente al primer intento en mi máquina :O!!!

A priori podría uno pensar que se trata de un bug en SQL Server 2014, pero parece algo que ya ocurre en versiones anteriores y tiene más que ver con un problema de seguridad en mi máquina. No voy a entrar en detalles de por qué me ha pasado, pero si que considero interesante que a cualquiera que le pase esto, pueda reaccionar y dar con una solución facil y rápida.

La instalación da error ¿ahora qué?

Tras instalar con el asistente en plan siguiente->siguiente,…llega uno finalmente a la pantalla de final de instalación donde espera ver el “todo ha ido bien, a disfrutar”…pero recibe un fastidioso popup con un trágico “algo ha ido mal, revise”

Concretamente este texto:

“An error occurred for a dependency of the feature causing the setup process for the feature to fail.”

Lo que debemos hacer es no estresarse y ver qué ha ocurrido. Para ello iremos al directorio de output de instalación de SQL Server (que por defecto es):

C:Program FilesMicrosoft SQL Server120Setup BootstrapLog20140402_134329

El primer fichero al que deberemos ir a mirar es el fichero “Summary_máquina_XXXX_XXXX.txt” que en mi caso era:

Ahi ya podemos ver qué ha pasado en modo resumen:

Feature:                       Database Engine Services
Status:                        Failed: see logs for details
Reason for failure:            An error occurred during the setup process of the feature.
Next Step:                     Use the following information to resolve the error, uninstall this feature, and then run the setup process again.
Component name:                SQL Server Database Engine Services Instance Features
Component error code:          0x851A001A
Error description:             Wait on the Database Engine recovery handle failed. Check the SQL Server error log for potential causes.
Error help link:               http://go.microsoft.com/fwlink?LinkId=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=12.0.2000.8&EvtType=0xD15B4EB2%400x4BDAF9BA%401306%4026&EvtType=0xD15B4EB2%400x4BDAF9BA%401306%4026

Visto esto ya lo que debemos hacer es intentar ver si el link hace algo (acaba de salir la RTM y el link no tiene información útil hoy por hoy)…y acto seguido deberemos ir al errorlog del servicio que esté afectado. En mi caso está afectado el motor relacional y buscaré en ese mismo directorio el fichero “sql_engine_core_inst_cpu64_X.log” para ver si vemos algo de relevancia durante la instalación.

Lo primero que debemos hacer es comprobar si la instalación ha ido correctamente y el problema es posterior, para ello nos iremos al final de dicho log y buscaremos la linea donde nos diga el estado de instalación. En mi caso se aprecia que la instalación ha ido correctamente:

MSI (s) (F4:1C) [13:50:08:732]: Note: 1: 1707
MSI (s) (F4:1C) [13:50:08:732]: Product: SQL Server 2014 Database Engine Services — Installation completed successfully.MSI (s) (F4:1C) [13:50:08:732]: Windows Installer installed the product. Product Name: SQL Server 2014 Database Engine Services. Product Version: 12.0.2000.8. Product Language: 1033. Manufacturer: Microsoft Corporation. Installation success or error status: 0.

Vemos por tanto que no ha sido problema de instalación, sino algo posterior. Lo siguiente entonces a mirar será ver si existe algún ERRORLOG de SQL Server para ver si ha intentado arrancar y por error de algun tipo no ha podido. Aqui es donde vemos el por qué del error de instalación. Vemos esto

2014-04-02 13:51:18.04 spid17s     Error: 17190, Severity: 16, State: 1.
2014-04-02 13:51:18.04 spid17s     Initializing the FallBack certificate failed with error code: 1, state: 20, error number: 0.
2014-04-02 13:51:18.04 spid17s     Unable to initialize SSL encryption because a valid certificate could not be found, and it is not possible to create a self-signed certificate.
2014-04-02 13:51:18.04 spid17s     Error: 17182, Severity: 16, State: 1.
2014-04-02 13:51:18.04 spid17s     TDSSNIClient initialization failed with error 0x80092004, status code 0x80. Reason: Unable to initialize SSL support. Cannot find object or property.
2014-04-02 13:51:18.04 spid17s     Error: 17182, Severity: 16, State: 1.
2014-04-02 13:51:18.04 spid17s     TDSSNIClient initialization failed with error 0x80092004, status code 0x1. Reason: Initialization failed with an infrastructure error. Check for previous errors. Cannot find object or property.
2014-04-02 13:51:18.04 spid17s     Error: 17826, Severity: 18, State: 3.
2014-04-02 13:51:18.04 spid17s     Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log.
2014-04-02 13:51:18.04 spid17s    Error: 17120, Severity: 16, State: 1.

 

Error detectado, buscando solución

Visto esto, iremos a buscar soluciones obviamente a ver si a otra persona le ha pasado y seguramente encontrarás este artículo (el cual te recomiendo leer):

http://blogs.msdn.com/b/karthick_pk/archive/2011/03/05/initializing-the-fallback-certificate-failed-with-error-code-1-state-1-error-number-2146893788.aspx?Redirected=true

Si como es mi caso no consigues que funcione tranquilo, que hay otra opción mas sencilla.

Aplicando solución práctica

El error es como comenta el artículo, relacionado con el usuario que levanta el servicio SQL Server. Durante la instalación se crea un usuario de servicio para la cuenta de todos y cada uno de los servicios de SQL Server como dictan las buenas prácticas, pero algo va mal durante la creación del perfil y se queda corrupto ese login, lo que da al traste con la última parte de la instalación (creación de master, model y msdb).

Como resultado no podremos iniciar la instancia ni ningun servicio asociado. Pero la solución es tan facil como:

  1. Cambiar el usuario que levanta el servicio (buena práctica siempre)
  2. Recrear las BBDD de sistema

Cambiar el usuario que levanta el servicio

Obviamente lo que uno siempre debe hacer al instalar un servicio de SQL Server es crear un usuario del dominio especifico para él y sin privilegios de administración de la máquina. Esto por tanto no es un problema y dado que debería entrar en los planes de todo buen despliegue realmente no es un problema tener que hacerlo.

Recrear las BBDD de sistema

Con el paso anterior te darás cuenta que los servicios levantan pero que no puedes acceder todavía a tu instancia con SSMS ni con tus aplicaciones. Esto es debido a que el proceso de instalación ha fallado en un punto en el que todavía no se han creado las BBDD de sistema y no se han asignado por tanto los permisos para los logins…tras lo cual no tendrás acceso…pero ni tu ni nada, incluido el servicio de SQL Agent que también estará caido.

La solución es recrear las BBDD de sistema manualmente (no reinstales!). Esto es algo ahora rápido, efectivo e inocuo porque la instancia está recien instalada y no tenemos nada que perder y sí mucho que ganar.

Para ello montamos el DVD de instalación y lanzamos el comando manual para recrear las BBDD de sistema

IMPORTANTE: NUNCA LANZAR EL COMANDO ANTERIOR SOBRE INSTANCIA EN PRODUCCIÓN

Una vez hecho lo anterior, todo funcionará correctamente.

En SolidQ somos expertos en solucionar situaciones problemáticas como la expuesta en este documento. Si estás enfrentándote a un problema que no sabes como solucionar no dudes en ponerte en contacto con nosotros.

 

Enrique Catalá