No, no es que SQL Express sea una mala base de datos. Al contrario, teniendo en cuenta el precio (gratis), el rendimiento, la estabilidad, la integración con .NET, etc., creo que es una base de datos muy buena para muchas aplicaciones.
¿Dónde está el problema entonces? En la instalación. La instalación es el problema. El proceso de instalación es largo, pesado y propenso a generar problemas. Pero vayamos por partes, que el contexto es importante.
La empresa para la que trabajo desarrolla una aplicación de escritorio que puede trabajar en un único equipo, pero que también puede funcionar en modo cliente/servidor, con varios equipos (PCs, PDAs, etc.), accediendo a un mismo servidor para intercambiar información en una red local.
Teniendo en cuenta que el desarrollo está realizado en .NET con NHibernate, la opción de SQL Express parece bastante clara, y de hecho es así como está implementada la aplicación.
Esta aplicación está diseñada para que cualquier usuario sin conocimientos de informática sea capaz de instalarla y trabajar con ella. Por ello, desde el principio se hizo mucho esfuerzo en crear una serie de asistentes de instalación y configuración que guiasen al usuario durante su primer contacto con la aplicación.
Como parte del proceso de instalación, se detecta si es necesario instalar SQL Express, y si es así, se lanza la instalación de SQL Express en modo automático para crear una instacia específica para la aplicación con la configuración necesaria. Cuando todo esto funciona, el proceso de instalación se convierte en el típico Siguiente, Siguiente, Siguiente…
El problema es que a veces SQL Express decide que no se quiere instalar. O se instala pero no arranca. O mejor aún, se instala y provoca un BSOD que impide arrancar windows.
Por lo menos sé que no estamos solos, ya que es fácil encontrar ejemplos de problemas en la instalación con MSXML 6 (una de las múltiples dependencias de SQL Express), problemas al arrancar el servicio durante la instalación y el mejor de todos, el pantallazo azul después de instalarlo.
Algunos de estos problemas (MSXML 6, BSOD) son relativamente fáciles de resolver si sabes buscar en Google, pero para un usuario medio suponen un mundo y para nosotros una llamada de soporte segura. El problema del arranque del servicio durante la instalación todavía no sé como resolverlo si no es reinstalando Windows.
Todos estos problemas nos han llevado a considerar la posibilidad de desarrollar una versión más sencilla de la aplicación, que use una base de datos embedida, aun a costa de sacrificar funcionalidades, con el fin de poder proporcionar una mejor experiencia de usuario durante la instalación.
Ahora mismo estamos evaluando distintas alternativas, como Sql Server CE, SQLite, VistaDB o Firebird. Así que posiblemente las próximas entradas de este blog acaben teniendo que ver algo con estos temas.
ACTUALIZACIÓN (21/07/20011): Parece que Microsoft es consciente de este tipo de problemas y la próxima versión de SQL Server (Denali), incluirá una versión más ligera de SQL Express.
Pingback: SQLite: Primeras impresiones | Koalite's blog
Pingback: SQL Server CE y NHibernate: Propiedades NTEXT e IMAGE | Koalite's blog
Hay algo que me gusta más aún que la instalación de SQL Server express, y es Sql Management studio Express… es un infierno de permisos, de hecho, para que no ocurra cierto error (diez mil y pico?) hay que utilizar la consola (CMD) ejecutándola como administrador…