Saludos amigos, hoy os traigo un post que espero que os sirva. Como muchos ya sabéis, Microsoft lanzó SQL Server para Linux este pasado Octubre de 2017. Os dejo las Release Notes aquí para que echéis un vistazo a las mismas. Como este post es bastante largo os dejo un menú para que saltéis allá donde más os interese:
- Sistemas Operativos soportados
- Requerimientos de sistema
- Instalación paso a paso
- Instalar SQL Server Agent para Linux
- Instalar soporte para Full-text search
- Instalar las herramientas de línea de comandos de SQL para Linux
- Realizar primera conexión y crear una Base de Datos
- Creando un usuario para una base de datos
- Administrando nuestras bases de datos usando Microsoft SQL Server Management Studio
Sistemas Operativos soportados
Antes de lanzarnos a instalar SQL Server sobre Linux, conviene echar un vistazo a los Sistemas Operativos en los que está soportado:
| Plataforma | Sistema de ficheros | Guía oficial de instalación |
|---|---|---|
| Red Hat Enterprise Linux 7.3 o 7.4 Workstation, Server, y Desktop | XFS or EXT4 | Guía oficial |
| SUSE Enterprise Linux Server v12 SP2 | EXT4 | Guía oficial |
| Ubuntu 16.04LTS | EXT4 | Guía oficial |
| Docker Engine 1.8+ sobre Windows, Mac, o Linux | N/A | Guía oficial |
Requerimientos de sistema
A nivel de requerimientos de sistema solamente se indica que mínimo 2GB para el propio SQL Server, con lo que me he ido a 4GB para estar seguros.
Instalación paso a paso
Lo primero que haremos será importar la llave GPG de los repositorios de Microsoft:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
Y ahora registraremos el repositorio en nuestro sistema:
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list)"
Ahora tendremos que actualizar los repositorios y lanzar la instalación de MSSQL para Linux:
sudo apt-get update sudo apt-get install -y mssql-server
El proceso tarda apenas unos segundos y el output puede ser similar al siguiente:
Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: gdb gdbserver libbabeltrace-ctf1 libbabeltrace1 libc++1 libc6-dbg libcc1-0 libcurl3 libjemalloc1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libsss-nss-idmap0 libunwind8 python python-minimal python2.7 python2.7-minimal Suggested packages: gdb-doc clang python-doc python-tk python2.7-doc binutils binfmt-support The following NEW packages will be installed: gdb gdbserver libbabeltrace-ctf1 libbabeltrace1 libc++1 libc6-dbg libcc1-0 libcurl3 libjemalloc1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libsss-nss-idmap0 libunwind8 mssql-server python python-minimal python2.7 python2.7-minimal 0 upgraded, 19 newly installed, 0 to remove and 0 not upgraded. Need to get 183 MB of archives. After this operation, 961 MB of additional disk space will be used. [...] Setting up libjemalloc1 (3.6.0-9ubuntu1) ... Setting up libsss-nss-idmap0 (1.13.4-1ubuntu1.10) ... Setting up mssql-server (14.0.3015.40-1) ... +--------------------------------------------------------------+ Please run 'sudo /opt/mssql/bin/mssql-conf setup' to complete the setup of Microsoft SQL Server +--------------------------------------------------------------+ Processing triggers for libc-bin (2.23-0ubuntu10) ...
Lanzaremos ahora el pequeño asistente de configuración de MSSQL con el siguiente comando:
/opt/mssql/bin/mssql-conf setup
El asistente nos preguntará que versión de MSSQL tenemos, voy a seleccionar Developer en mi caso ya que es Homelab:
Choose an edition of SQL Server: 1) Evaluation (free, no production use rights, 180-day limit) 2) Developer (free, no production use rights) 3) Express (free) 4) Web (PAID) 5) Standard (PAID) 6) Enterprise (PAID) 7) Enterprise Core (PAID) 8) I bought a license through a retail sales channel and have a product key to enter. Details about editions can be found at https://go.microsoft.com/fwlink/?LinkId=852748&clcid=0x409 Use of PAID editions of this software requires separate licensing through a Microsoft Volume Licensing program. By choosing a PAID edition, you are verifying that you have the appropriate number of licenses in place to install and run this software. Enter your edition(1-8): 2
Seleccionaremos que aceptamos la EULA:
The license terms for this product can be found in /usr/share/doc/mssql-server or downloaded from: https://go.microsoft.com/fwlink/?LinkId=855862&clcid=0x409 The privacy statement can be viewed at: https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x409 Do you accept the license terms? [Yes/No]: Yes
Seleccionaremos una password robusta para el usuario de sa:
Enter the SQL Server system administrator password: Confirm the SQL Server system administrator password:
Y el proceso de configuración tardará apenas unos segundos en estar ya online:
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /lib/systemd/system/mssql-server.service. Setup has completed successfully. SQL Server is now starting.
Instalar SQL Server Agent para Linux
Como muchos ya sabéis SQL Server Agent nos permite ejecutar tareas programadas en Microsoft SQL Server, no viene instalado por defecto, pero podemos instalarlo de la siguiente manera:
sudo apt-get install mssql-server-agent
Ya está, tendremos que reiniciar el servicio de MSSQL para Linux de la siguiente manera:
sudo systemctl restart mssql-server.service
Instalar soporte para Full-text search
Otra funcionalidad que seguramente podamos echar de menos es el soporte para full-text search, para instalarlo, si queremos, tan sencillo como:
sudo apt-get install mssql-server-fts
Y otro reinicio del servicio de MSSQL para Linux:
sudo systemctl restart mssql-server.service
Instalar las herramientas de línea de comandos de SQL para Linux
Para crear bases de datos y realizar administración de nuestro SQL Server en Linux podemos instalar las herramientas de línea de comandos de la siguiente manera.
El primero paso será añadir la llave GPG de Microsoft para esta aplicación:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
Registraremos ahora el repositorio de Microsoft en nuestro ubuntu:
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/prod.list)"
Por último una actualización del repositorio de paquetes y la posterior instalación de las herramientas:
sudo apt-get update sudo apt-get install -y mssql-tools unixodbc-dev
El proceso de instalación nos preguntará dos veces si aceptamos la EULA, simplemente nos moveremos hasta donde dice yes y presionaremos intro.
Para realizar comandos de manera mas sencilla, podemos añadir las tools a nuestro PATH de usuario para que podamos usarlas de manera más rápida:
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc
Realizar primera conexión y crear una Base de Datos
Ahora que ya tenemos todo listo, vamos a conectarnos a este flamante nuevo SQL Server sobre Linux y crear una DB.
Para conectarnos tan sencillo como usar el siguiente comando, si no ponemos el -P nos la preguntará para mayor seguridad:
sqlcmd -S localhost -U SA -P TUPASSWORD
Para ver todas las bases de datos por ejemplo podemos lanzar el siguiente comando:
SELECT Name from sys.Databases; GO
Que nos devolverá algo similar a esto:
Name -------------------------- master tempdb model msdb (4 rows affected) 1>
Vamos a crear una base de datos ahora, para ello será tan sencillo como realizar lo siguiente:
CREATE DATABASE testdb; GO
Ya la tendríamos creada, así de sencillo.
Creando un usuario para una base de datos
Otra de las típicas tareas que realizamos en un entorno de MSSQL es crear usuarios dentro de una base de datos, para ello haremos lo siguiente, iremos hasta dentro de la base de datos:
USE testdb; GO
Y crearemos el login en el servidor, es importante dejar las comillas simples ‘ ‘:
CREATE LOGIN jorgeblog WITH PASSWORD = '<TUPASSWORDAQUI>'; GO
Ahora crearemos el usuario al que linkaremos este login:
CREATE USER jorgeblog FOR LOGIN jorgeblog; GO
Daremos todos los privilegios de ALTER a este nuevo usuario:
GRANT ALTER TO jorgeblog; GO
Administrando nuestras bases de datos usando Microsoft SQL Server Management Studio
Si tenemos servidores ejecutando Microsoft Windows, podemos descargar SSMS (Sequel Server Management Studio) desde la web de Microsoft para conectarnos a este entorno y manejar todo de manera visual, como siempre se ha realizado.
Abriremos el SSMS e introduciremos el hostname o IP de nuestro server SQL en Linux:
Podremos ver la versión que estamos ejecutando, etc:
Y ya estaremos dentro del servidor de manera tradicional, con todas las opciones, bases de datos, etc:


Muchas gracias, me será de mucha ayuda.
CUPONES DE DESCUENTO
https://www.udemy.com/aprende-a-crear-dashboard-con-devexpress-desde-cero/?couponCode=DASHBOARD2018
https://www.udemy.com/administracion-avanzada-con-sql-server/?couponCode=PROMO2018
https://www.udemy.com/optimizacion-de-consultas-con-sql-server/?couponCode=PROMO2018
https://www.udemy.com/master-en-consultas-con-microsoft-sql-server/?couponCode=PROMO2018
https://www.udemy.com/administracion-basica-de-sql-server-201220142016/?couponCode=PROMO2018
Muchas gracias por los cursos Denis, muy utiles
Pido disculpa por usurpar tu blog, gracias a vos por la gentileza de haberme permitido publicar, gran abrazo desde Nicaragua.
ExcelwExc tus tutoetutor Jorge, me viene como anillo al dedo, mañana los estaré probando y creo ya el domingo debería ya tener el servidor SQL en Linux Ubuntu, y haber migrado un respaldo de nuestra bases de datos que tenemos en un datacenter, te comento cómo fue el resultado
Por cierto aprovecho el post para hacerte una pregunta, trate hoy de hacer prueba con Vmware workstation pro y montar La ISO de windowW server 2016 en mi PC y me saying wrreo Al momento de iniciar la instalación del sistema operativo, pero desde virtual box la hice sin problemas
Saludos Jorge instale el SQL Server en Ubuntu sin problemas pero no me permite desde el Management Studio hacer el Restore de la Bases de Datos.
Saludos Juan,
Intentas recuperar una SQL creada en windows en Linux?
Si jorge es una BD creada en SQL SERVER de Microsoft quiero hacer el Restore del Backupm en Linux desde el Management Studio, porque puedo conectarme de mi estación en Windows con el Management Studio al Servidor Linux con SQL Server pero la opción de Restore solo esta disponible hasta localizar el dispositvo de Copia de Seguridad pero no me da la opción de restaurar la BD.
Si Jorge la Base de Datos esta en Producción en Windows hice el Backup pero no me deja hacer el Restore en Linux
Mira a ver si esto ayuda – https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-migrate-restore-database?view=sql-server-2017#restore-your-database-on-linux
Saludos Jorge hice todo lo que me indicaste en el articulo anterior en Ingles y no me funcionó, pero he visto que la ruta /var/opt/mssql/data no existe, solo /opt/mssql luego de instalar con todos los pasos indicacos en tu post, yo cree con mkdir /opt/mssql/backup este directorio y alli copie mi archivo de respaldo .bak pero no me hace el Restore, creo que debo crear el directorio DATA o cambiar el propietario del archivo .BAK con chown
Hice todo lo que esta en esa documentacion en ingles, pero me da error al hacer el procedimiento transact-sql creo que debe ser permisos o dueño de la carpeta mssql, porque leo que està como root el propietario de la carpeta mssql: cito:
RESTORE DATABASE YourDB
FROM DISK = ‘/var/opt/mssql/backup/YourDB.bak’
WITH MOVE ‘YourDB’ TO ‘/var/opt/mssql/data/YourDB.mdf’,
MOVE ‘YourDB_Log’ TO ‘/var/opt/mssql/data/YourDB_Log.ldf’
GO
alli cambio el nombre de mi BD y el dispositivo de respaldo Backup
Muchas gracias por tu tutorial. Tengo un atasco y si me puedes ayudar te lo agradeceria mucho.
Tengo todo instalado en ubuntu 18.04, y corre la base bien, la veo perfectamente en la red con ssms, pero para conectar con el programa es por ODBC, me da conexion , pero debo habilitar TCP/IP y las canalizaciones con nombre. Esto en windows se hace por sql server configuration manager, pero en ubuntu no encuentro el modo de habilitar.
Muchas gracias