Los sistemas de virtualización facilitan la ejecución otros sistemas operativos sin la necesidad de reiniciar el ordenador. Con lo que se puede ejecutar aplicaciones que no se encuentran disponibles en un sistema operativo o probar diferentes configuraciones sin riesgo de afectar a una máquina. Además de esto también se pueden instalar servidores para usar sus servicios desde la máquina anfitrión. En esta entrada se va a explicar cómo ejecutar SQL Server en una máquina virtual VirtualBox y acceder desde el anfitrión. Para lo que se utilizará SQL Server Express 2017.
A partir de SQL Server 2017 existen versiones tanto para Linux como Docker de este sistema de gestión de base de datos. Por lo que actualmente se puede instalar de forma nativa en ciertos distribuciones Linux y, mediante Docker, en Mac. Aunque en estas últimas no existe SQL Server Management Studio.
Instalación de SQL Server Express
La instalación de SQL Server Express en una máquina virtual se va a realizar en un sistema Windows 10. Una vez cargada la máquina es necesario ir a la página de descargar de SQL Server Express y seleccionar la opción descargar ahora. Pudiéndose descargar o instalar desde el navegador. Al finalizar la descarga aparecerá un asistente en el que se pregunta el tipo de instalación: Básica, Personalizada o Descarga de medios. En esta ocasión la opción básica es suficiente.
Una vez finalizada la instalación se ofrece la posibilidad de instalar SQL Server Management Studio (SSMS). La cual es una herramienta facilita la gestión de bases de datos SQL Server, por lo que su instalación es recomendable. Al finalizar la instalación de SSMS es necesario reiniciar Windows.
Creación de una base de datos
Una vez instalado SQL Server Express y SQL Server Management Studio (SSMS), es necesario crear una nueva base de datos para probar. Lo que se puede realizar de forma fácil con SSMS. En este caso una simple tabla con un par de registros es más que suficiente.
Creación de un usuario
Por defecto el método de acceso a SQL Server Express es mediante la autenticación de Windows. Para poder acceder desde fuera es necesario cambiar esto y crear un usuario que pueda acceder a la base de datos. Haciendo clic en el botón derecho de la conexión en SSMS se accede a las opciones de la base de datos. En este se selecciona propiedades y en la ventana que aparece la opción de seguridad. Ahí se ha de cambiar la forma de autentificación a la opción de “SQL Server and Windows Authentication mode”.
Posteriormente en seguridad se seleccionará la opción de nuevo login. En la ventana que aparece se creará un nuevo usuario seleccionando la autenticación de SQL Server.
Al usuario es necesario asignarle un rol que tenga acceso a la base de datos. En este caso se podrá utilizar el rol de sysadmin.
Configuración de SQL Server Express
Ahora es necesario configurar SQL Server Express para que se puede acceder desde fuera de la máquina virtual. Para ello es necesario lanzar SQL Server Configuration Manager. En esa aplicación se irá a Configuración de Redes de SQL Server y en Protocolos de SQLEXPRESS se necesario habilitar la opción de TCP/IP.
Posteriormente es necesario ir a las propiedades para cambiar la configuración. Por defecto SQL Express utiliza un puerto dinámico, por lo que es necesario cambiarlo a uno fijo. Para ello se irá al final de las opciones y en IPAII se indicará el puerto 1433 y se borrará el 0 de la opción Puertos dinámicos TCP.
Además, es necesario apuntar el valor de la opción Dirección IP de IP2. Ya que será necesario para el reenvío de los puertos en VirtualBox.
Para que los cambios surjan efecto es necesario reiniciar el servidor. Esto se puede conseguir sin reiniciar el servidor. Para lo que se irá a Servicios SQL Server y sobre el servicio SQL Server se con el botón secundario del ratón se selecciona reiniciar.
Configuración del cortafuegos
Para poder acceder desde fuera de la máquina es necesario abrir el cortafuegos de Windows para un cliente pueda acceder. En primer lugar, es necesario abrir la configuración del cortafuegos de Windows y seleccionar la opción configuración avanzada. En la ventana que aparece, Windows Defender Firewall con seguridad avanzada es necesario crear una nueva regla de entrada. Así aparecerá un asistente el el que es necesario seleccionar la opción puerto.
En la siguiente ventana se seleccionará el puerto 1433 que es que se configuró anteriormente en las opciones de SQL Express.
Posteriormente es necesario seleccionar la opción permitir la conexión.
La regla se aplicará en todos los perfiles.
Finalmente es necesario dar un nombre a la regla para identificarla posteriormente.
Configuración de VirtualBox
Una vez finalizado la configuración en Windows es necesario configurar el reenvío de puertos en VirtualBox. Para ello es necesario ir a la configuración de red de la máquina virtual, seleccionar el adaptador de red y en avanzadas seleccionar reenvío de puertos. En esta ventana se crear una nueva regla. El nombre de la regla es para identificarla y el protocolo es TCP. La IP del ordenador anfitrión es siempre 127.0.0.1 y el puerto será 1433. Por otro lado la IP del ordenador invitado es la que se apuntó anteriormente en la configuración del servicio y el puerto es también el 1433.
Comprobación de la conexión
Para comprobar la conexión se puede utilizar el programa DBeaver. Este es un cliente de SQL multiplataforma que se puede descargar para Windows, Linux y Mac. En este programa se creará una nueva conexión a la base de datos utilizando el controlador de SQL Server. En el asistente es necesario introducir la configuración: el nombre de la base de datos, el modo de conexión y las credenciales. Para comprobar la conexión pulsando en el botón correspondiente. La primera vez será necesario descargar el controlador que se puede hacer automáticamente. Si la prueba ha sido satisfactoria se puede pulsar en Finalizar.
Una vez configurada la base de datos es posible acceder lanzar consultas con DBeaver para comprobar que se puede acceder al contenido de esta.
Conclusiones
En esta entrada se ha visto cómo ejecutar SQL Server en una máquina virtual y consumir el servicio desde la máquina anfitrión. Para lo que se ha utilizado el reenvío de los puertos. El procedimiento se puede utilizar también para la configuración de otros servicios que se quiere evaluar o probar.
Actualmente, incluso en el caso de SQL Server, esto también se puede conseguir utilizando Docker. Aunque este procedimiento también puede ser de interés en ciertas ocasiones.
Imágenes: Pixabay (Colossus Cloud)
Deja una respuesta