Instalación y configuración desatendida SQL Server 2025 en Ubuntu Server 24.04



La instalación y primeras configuraciones mediante scripts de SQL Server 2025 es una de las opciones más rápidas de tener configurado tanto el servidor Linux como SQL Server.




Vamos a ver paso a paso el script de instalación que al final del artículo os dejo completo pero que a lo largo del artículo voy a ir comentando la jugada.

Lo primero actualizamos los repositorios e instalamos un par de aplicaciones que vamos a necesitar

sudo apt update
sudo apt install -y curl gnupg

Ahora nos descargamos las claves GPG de Microsoft para poder verificar paquetes firmados de sus repositorios en distribuciones basadas en Debian/Ubuntu y añadimos el repositorio específico de Microsoft para SQL Server 2025 en Ubuntu Server 24.04.

curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl -fsSL https://packages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.list | sudo tee /etc/apt/sources.list.d/mssql-server-2025.list

Actualizamos e instalamos SQL Server 2025

sudo apt update sudo apt install -y mssql-server

Y ahora ejecutamos la configuración inicial con los parámetros que queremos iniciales.

sudo \ ACCEPT_EULA='Y' \
MSSQL_PID='EnterpriseDeveloper' \
MSSQL_SA_PASSWORD='YourStrongPassword' \
MSSQL_DATA_DIR='/var/opt/mssql/data' \
MSSQL_LOG_DIR='/var/opt/mssql/logs' \
MSSQL_COLLATION='SQL_Latin1_General_CP1_CI_AS' \
MSSQL_TCP_PORT='1433' \
MSSQL_AGENT_ENABLED='true' \
/opt/mssql/bin/mssql-conf -n setup

Un apunte sobre esta forma desatendida de para instalar SQL Server en Linux, el password si tiene caracteres signos de puntuación el shell puede interpretar caracteres como $, ! o \, y la contraseña almacenada puede ser diferente de la que pusiste.

A mi me ha pasado accediendo desde sqlcmd

La manera sencilla de resolverlo es cambiar el password:

sudo systemctl stop mssql-server
sudo /opt/mssql/bin/mssql-conf set-sa-password
sudo systemctl start mssql-server

Para probar que conectáis utilizar:

sqlcmd -S localhost -U sa -C -Q "SELECT @@VERSION;"

Si sqlcmd os da error es porque no tenéis actualizado vuestro bash, en mi caso:

source .bashrc

SI tenéis zsh, pues source .zshrc

Y el sqlcmd ya debería de funcionar.

Si, al final no habéis puesto password o no os funciona, cambiarlo.

Ya no tenemos instalado y configurado con el ultimo comando lanzado mssql-conf -n setup

Pero el script hace mas cosas

La siguiente instrucción habilita el Transparent Huge Pages (THP) Microsoft recomienda actualmente mantener THP habilitado para SQL Server 2025 en Linux porque las cargas de SQL Server suelen manejar áreas de memoria grandes y de larga duración Buenas prácticas de rendimiento: Almacenamiento, kernel, CPU y red para SQL Server en Linux

echo always | sudo tee /sys/kernel/mm/transparent_hugepage/enabled

Como cuando hemos configurado SQL Server le hemos dicho esto:

MSSQL_AGENT_ENABLED='true'

Para que instalara SQL Server Agent ahora lo vamos a activar y reiniciamos SQL Server.

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server

Hasta aquí la configuración de SQL Server, ahora vamos a configurar el timezone de la maquina para que la hora sea la correcta

sudo apt update

sudo timedatectl set-timezone Europe/Madrid
sudo timedatectl set-ntp true

timedatectl status

Os dejo tambien la configuración del kernel de linux recomendada por Microsoft

# Microsoft SQL Server kernel tuning
sudo tee /etc/sysctl.d/99-mssql.conf > /dev/null <<'EOF'
# Memory configuration
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.max_map_count = 1600000

# Disable automatic NUMA balancing
kernel.numa_balancing = 0

# Network socket buffers
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF

sudo chmod 644 /etc/sysctl.d/99-mssql.conf
sudo sysctl --system

Recordar que esta configuración del kernel son recomendaciones oficiales de rendimiento, no valores obligatorios ni necesariamente óptimos para cualquier servidor.

Microsoft los presenta dentro de un perfil TuneD que hereda de throughput-performance. Conviene probarlos con la carga real
Procedimientos recomendados de rendimiento: almacenamiento, kernel, CPU y red para SQL Server en Linux

En este caso he utilizado la de España / Madrid pero independientemente de donde esteis si el servidor trabaja en una región debéis poner esa hora.

Y por último activamos opciones del sistema

Y aquí os dejo el código completo


#!/bin/bash

sudo apt update
sudo apt install -y curl gnupg

curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl -fsSL https://packages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.list | sudo tee /etc/apt/sources.list.d/mssql-server-2025.list

sudo apt update
sudo apt install -y mssql-server

sudo \
  ACCEPT_EULA='Y' \
  MSSQL_PID='EnterpriseDeveloper' \
  MSSQL_SA_PASSWORD='TuPasswordGuay' \
  MSSQL_DATA_DIR='/var/opt/mssql/data' \
  MSSQL_LOG_DIR='/var/opt/mssql/logs' \
  MSSQL_COLLATION='SQL_Latin1_General_CP1_CI_AS' \
  MSSQL_TCP_PORT='1433' \
  MSSQL_AGENT_ENABLED='true' \
  MSSQL_ENABLE_HADR='1' \
  /opt/mssql/bin/mssql-conf -n setup

# Activar THD para servidores dedicados
echo always | sudo tee /sys/kernel/mm/transparent_hugepage/enabled

curl -sSL -O https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb
sudo apt update

sudo ACCEPT_EULA=Y apt install -y mssql-tools18 unixodbc-dev

echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server

# Configuración de la zona horaria
sudo apt update

sudo timedatectl set-timezone America/Mexico_City
sudo timedatectl set-ntp true

timedatectl status

# Microsoft SQL Server kernel tuning
sudo tee /etc/sysctl.d/99-mssql.conf > /dev/null <<'EOF'
# Memory configuration
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.max_map_count = 1600000

# Disable automatic NUMA balancing
kernel.numa_balancing = 0

# Network socket buffers
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF

sudo chmod 644 /etc/sysctl.d/99-mssql.conf
sudo sysctl --system

# sqlcmd -S localhost -U sa -C -Q "SELECT @@VERSION;"

# sudo systemctl stop mssql-server
# sudo /opt/mssql/bin/mssql-conf set-sa-password
# sudo systemctl start mssql-server
Las últimas lineas conectadas son: las primera para probar que funciona la instalación y las otras tres para cambiar el password de sa si no funcionase bien por lo que he comentado antes.


... y esto es todo amig@s!!! hasta la próxima ...
Saludos
Alex
:-)
/

Comentar el artículo

Al enviar aceptas nuestra política de privacidad.

Suscríbete a nuestra newsletter

Sin spam. Solo contenido útil para profesionales de bases de datos.