Microsoft anuncio en Marzo de este año 2016 la disponibilidad de Sql Server en Linux. Vamos a dedicar este articulo a ver el procedimiento para instalar y poner en marcha Sql Server en la distribución de Linux Ubuntu 16.04.
Mientras escribimos este articulo, las distribuciones de Linux compatibles con Sql Server son:
– Red Hat Enterprise 7.2
– Ubuntu 16.04
– Docker Engine 1.8+
Para poder hacer la demostración, vamos a instalar Ubuntu 16.04 en una maquina virtual. En nuestro caso hemos usado HyperV.
Nota: Se necesitan al menos 3.25GB de RAM libres.
Una vez completada la instalación de Ubutu, vamos a instalar y configurar Sql Server bajo Ubuntu siguiendo los siguientes pasos:
1. Descargamos la clave publica de Microsoft y la importamos en el repositorio usando apt-key.
wget https://packages.microsoft.com/keys/microsoft.asc sudo apt-key add microsoft.asc rm microsoft.asc
2. Registramos el repositorio para Microsoft Sql Server Ubuntu
curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
3. Instalamos SQL SERVER
sudo apt-get update sudo apt-get install -y mssql-server
Si la instalación se ha realizado correctamente, se mostrará un mensaje indicando el comando a ejecutar para lanzar el asistente de configuración
4. Lanzamos el asistente de configuración
sudo /opt/mssql/bin/sqlservr-setup
El asistente se inicia pidiéndonos la contraseña para el usuario “SA”. Nota: Es importante que la contraseña del usuario “SA” cumpla las siguientes condiciones:
- Longitud mínima 8 caracteres
- Letras Mayúsculas y minúsculas
- 1 o más dígitos numéricos
- 1 o más caracteres no alfanuméricos
A continuación se puede configurar si se quiere iniciar Sql Server Ahora y si se quiere iniciar Sql Server cuando se inicie el sistema operativo.
Para comprobar que todo se ha instalado correctamente
systemctl status mssql-server
En este punto ya tenemos instalado y configurado el motor de base de datos sql server sobre linux. A continuación, vamos a instalar las utilidades de sql server para linux, las cuales incluyen
– sqlcmd: utilidad de consulta de linea de comandos
– bcp: utildiad para realizar importaciones y exportaciones (bulk)
– Microsoft ODBC Drivers
Lo primero es registrar el repositorio para Microsoft Ubuntu
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
A continuación vamos a instalar las tools
sudo apt-get update sudo apt-get install mssql-tools
Durante el proceso de instalación, se mostrarán 2 mensajes para aceptar los términos de licencia.
Una vez finalizada la instalación
vamos a ejecutar el comando “sqlcmd” para testear la conexión con la base de datos y lanzar algunas consultas SQL.
Nota: La autentificación es de tipo SQL y se usa el puerto 1433
sqlcmd -S localhost -U SA -P 'CLAVE'
El comando anterior permite establecer una conexión al servidor sql server local. Una vez conectados vamos a lanzar una serie de comandos SQL básicos. Por ejemplo
-
Creamos una base de datos:
CREATE DATABASE PROGRAMMINGAPPS; go
-
Usamos la base de datos creada en el paso anterior
USE PROGRAMMINGAPPS; go
-
Creamos una tabla
CREATE TABLE Clientes(Id int not null, nombre nvarchar(200) not null, telefono varchar(20) not null, mail varchar(200)); go
-
Añadimos una clave primaria
ALTER TABLE Clientes ADD CONSTRAINT PK_CLIENTES PRIMARY KEY CLUSTERED (id); go
-
Crear un indice non-clustered
CREATE NONCLUSTERED INDEX IX_CLIENTES_TELEFONO ON CLIENTES(Telefono); go
-
Insertamos algunos de registros
INSERT INTO CLIENTES(Id,Nombre,Telefono,Mail) VALUES(1,'Cliente1','12345','cli1@programmingapps.net'); INSERT INTO CLIENTES(Id,Nombre,Telefono,Mail) VALUES(2,'Cliente2','22222','cli2@programmingapps.net'); INSERT INTO CLIENTES(Id,Nombre,Telefono,Mail) VALUES(3,'Cliente3','33333','cli3@programmingapps.net'); go
-
Recuperamos los registros
Select * from clientes; go
Por último, vamos a probar a conectarnos usando el Sql Managment Studio desde otro PC con Windows.
Para conocer la IP de la máquina linux se puede ejecutar el comando
ifconfig eth0
Nota: recuerda que el firewall tiene que tener el puerto 1433 abierto.