Logo de SQL ServerMuchos desarrolladores tienen el radar a la versión Express de SQL Server. SQL Server Express te permite disponer del motor de bases de datos relacionales de Microsoft sin necesidad de pagar licencia alguna, para el uso que quieras darle, y con algunas limitaciones (que explica el enlace anterior) bastante asumibles para la mayoría de las aplicaciones. Está genial para poner en producción sin coste, aunque mucha gente lo usa también para hacer desarrollo en local.

Lo malo de SQL Server Express es que es un servidor de datos completo, y como tal, se instala en tu equipo y está todo el tiempo operativo, desde que inicias sesión, lo estés utilizando o no. Es decir, ocupa memoria, carga las bases de datos y consume ciclos de CPU, lo estés utilizando o no.

Sin embargo, existe una edición menos conocida y especialmente pensada para usar cuando estás desarrollando. Se trata de SQL Server LocalDB. Es una edición mínima de SQL Server que instala tan solo lo estrictamente necesario para poner a andar SQL Server en el momento cuando se necesite, quitándose del medio cuando no sea así. Gracias a SQL Server LocalDB tienes toda la potencia del servidor de datos, pero sin necesidad de tener un servicio consumiendo recursos de tu equipo constantemente, por lo que aprovechas mejor el hardware. Utiliza una cadena de conexión especial que hace que, cuando te conectas a él porque necesitas usar una base de datos, crea y arranca automáticamente la infraestructura de SQL Server necesaria en un instante, descargándolo todo en cuanto se pierde la última conexión. Es ideal para desarrollar y para embeber con tus desarrollos. Es totalmente gratuito.

En este artículo te voy a explicar cómo instalarlo, conectarte y actualizarlo.

Instalar SQL Server LocalDB

Antes de nada: es posible que ya tengas LocalDB instalado en tu equipo, porque viene incluido de serie con Visual Studio. Puedes averiguarlo abriendo una línea de comandos y escribiendo: sqllocaldb info. Si se muestra algo por pantalla y no te da un error, es que ya la tienes instalada:

Información de la instancia actual de SQL Sever LocalDB

Este comando mostrará las instancias de LocalDB que ya tienes instaladas. Normalmente será una con el nombre MSSQLLocalDB.

Si la tienes instalada ya, lo mas seguro es que esté muy desactualizada y mejor que tengas lo último para desarrollar. Una de las limitaciones de LocalDB es que no se actualiza sola: hay que hacerlo manualmente, por lo que lo descrito en este apartado para la instalación te vendrá bien para tenerlo a la última en cualquier caso, así que salta a la sección siguiente, sobre actualización, y sigue leyendo allí... Luego ya regresarás a este apartado.

Si no tienes SQL Server LocalDB, lo primero que debes saber es que no existe una descarga directa para LocalDB en la web de Microsoft. Para instalarlo antes debes descargarte el instalador de SQL Server Express desde la página de descargas de este producto. Ya verás que tiene truco y podremos instalar LocalDB desde ahí.

Está hacia la mitad de la página, fíjate bien:

La imagen muestra en dónde encontrar la descarga de SQLServer Express

Al pulsar el botón de Descargar ahora > te descargas un ejecutable pequeño (poco más de 6MB)  que no es más que una interfaz para hacer la descarga definitiva e instalar.

Haz doble-clic y arranca la instalación (necesitarás permisos de administrador).

En la primera pantalla te ofrece tres opciones para hacer una instalación básica de SQL Server Express, una personalizada, y la tercera para descargar los archivos de instalación:

Las 3 opciones mencionadas

Lo bueno de hacer esto es que además nos podremos quedar con el programa de instalación para poder utilizarlo cuando queramos, en otros equipos, sin necesidad de pasar por la descarga previa de SQL Server Express. Y sobre todo por un motivo: si tienes bases de datos en producción de versiones anteriores de SQL Server, en el futuro, tener guardado este instalador te ayudará a poder probarlas en local sin volverte loco porque haya incompatibilidades de las versiones.

En la siguiente página nos permite elegir él idioma que nos interese y qué edición de la base de datos gratuita nos interesa. La tercera opción es LocalDB:

Idioma y ediciones disponibles

Fíjate en la sustancial diferencia de tamaño que tiene LocalDB frente a SQL Server Express: tan solo 53 MB frente a los 255MB como mínimo de la edición Express, que llega hasta casi 800MB si la queremos con herramientas avanzadas. Ya solo esto es una gran ventaja.

Al elegir LocalDB y pulsar Descargar, comienza la descarga con una barra de progreso, que dejará el archivo SqlLocalDB.msi en la carpeta que hayamos elegido.

Una vez descargado es hacer doble-clic sobre él, aceptar las condiciones y listo: tienes SQL Server LocalDB instalado y listo en unos pocos segundos.

Cómo actualizar tu instancia de LocalDB

Si al empezar el apartado anterior has visto que tenías un LocalDB ya instalado, vamos a ver cómo averiguar qué versión tienes y cómo actualizarla en caso de que no sea la última.

Si antes usaste el comando info y viste que tenias una instancia ya instalada, averigua la versión exacta escribiendo: SqlLocalDB.exe info MSSQLLocalDB (si tu instancia se llama de otra manera, pon el nombre correcto al final y no MSSQLLocalDB, aunque lo normal es que sea este nombre).

Si te da un error del tipo The automatic instance "MSSQLLocalDB" is not created es porque la instancia no está en ejecución, ya que no estás usando ninguna base de datos, y por lo tanto no está en funcionamiento. Debes ponerla en marcha con el comando SqlLocalDB.exe start MSSQLLocalDB. Ahora ya puedes lanzar el comando anterior de información otra vez, y verás sus datos. Para de nuevo la instancia para poder actualizarla, con SqlLocalDB.exe stop MSSQLLocalDB.

La siguiente figura muestra todo el proceso anterior:

El proceso descrito antes

Por ejemplo, en esta captura podemos ver que mi LocalDB (que es la venía con Visual Studio 2019) no está actualizada para nada ya que, en el momento de escribir esto, la versión de SQL Server vigente es la 2019 que tiene números de versión que comienzan por 15, y la de mi imagen comienza por 13 (o sea, que es SQL Server 2016, un par de versiones por detrás). De todos modos, si te fijas en las imágenes del punto anterior, en la parte inferior del instalador de SQL Server Express te muestra la versión del mismo y puedes verificarlo.

Así que toca actualizarla. Asegúrate de que todas las instancias están detenidas y vete al apartado anterior para instalar la nueva versión. Una vez hayas terminado, vuelve aquí.

Si ahora repites los pasos anteriores verás que sigue saliendo la versión antigua. Esto es porque, una vez creada una instancia no se actualiza: se queda igual.

Así que tienes dos opciones: actualizar la instancia actual o crear una nueva (por ejemplo MSSQLLocalDB15 u otro nombre cualquiera). Yo me inclino por la primera opción, actualizarla,pero si por lo que sea (una base de datos antigua que debes mantener) prefieres quedarte con las dos, el proceso es el mismo excepto el primer paso: eliminarla.

Vamos a verlo:

  1. Elimina la instancia existente con SqlLocalDB.exe delete MSSQLLocalDB. Si se muestra un error indicando que está en funcionamiento es porque no la has parado antes, así que usa SqlLocalDB.exe stop MSSQLLocalDB para detener la instancia y vuelve a ejecutar el comando delete.
  2. Crea una nueva instancia con el comando create, así: SqlLocalDB.exe create MSSQLLocalDB. Verás que en unos 5 segundos se crea la nueva instancia y te muestra la versión con la que se ha creado. Yo le he puesto el mismo nombre que a la vieja, pero puedes usar otro diferente e incluso conservar las dos, como comentaba antes. Puedes levantar la instancia con start y comprobar que se está ejecutando con la nueva versión que acabas de instalar.

En la siguiente figura se pueden ver estos pasos tal cual los he descrito, partiendo de la captura anterior en la que, antes de instalar lo último, tenía una instancia antigua con la versión 13.x.x del producto:

Los comandos descritos: stop, delete, create, start e info

¡Listo! Ya tienes tu LocalDB a la última.

Conectarse a SQL Server LocalDB

Para conectarte a LocalDB normalmente lo harás desde un programa que use alguna base de datos, pero para trabajar y gestionar las bases de datos y sus tablas puedes hacerlo desde SQL Server Management Studio (SSMS) o desde cualquier programa que lo permita, como por ejemplo el propio Visual Studio.

La cadena de conexión para conectarte a una instancia de LocalDB es igual a cualquiera que usarías para SQL Server, pero con un detalle importante: el nombre del servidor de datos. El nombre del servidor es siempre (LocalDB)\<NombreInstancia>, es decir, en nuestro caso: (LocalDB)\MSSQLLocalDB:

El diálogo de conexión a LocalDB desde SQL Server Management Studio

No es necesario que esté levantada la instancia ya que la levantará automáticamente en cuanto haya un intento de conexión. 

Una vez conectado, se maneja como un SQL Server normal, pudiendo adjuntar bases de datos, gestionarlas, etc... La única limitación es que solo se puede gestionar en local (de ahí su nombre) y nunca en remoto:

La imagen muestra el árbol de una base de datos de ASP.NET desde SSMS

Para conectarte desde un programa, la cadena de conexión es como la de cualquier otro programa que trabaje con SQL Server, solo que en este caso usas el nombre de la instancia y puedes conectarte a un archivo de base de datos concreto, sin necesidad de tenerlo adjuntado al servidor (como, de hecho, se hace con SQL Server Express también), o sea, algo como esto:

Server=(LocalDB)\MSSQLLocalDB;Integrated Security=true;AttachDbFileName=E:\Datos\MiBDD.mdf

Donde indicamos la ruta a la base de datos en el parámetro AttachDbFileName. De este modo, cuando se conecte la aplicación, LocalDB inicia automáticamente la instancia indicada y le adjunta la base de datos que hayamos dicho. Cuando se cierre la última conexión, desadjuntará la base de datos y liberará la instancia. Cómodo, práctico y sin consumir recursos de nuestro equipo más que cuando es necesario. Muy bien 😊

¡Espero haberte ayudado!

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA