Saltar a contenido

SQL Server

Paso 1: Instalación de SQL Server 2019

  1. Descargue la clave pública, conviértala de ASCII a formato GPG y escríbala en la ubicación requerida:

    curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
    
  2. Descargue y registre manualmente el repositorio de Ubuntu de SQL Server:

    curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list
    
  3. Ejecute los siguientes comandos para instalar SQL Server:

    sudo apt-get install -y mssql-server 
    
  4. Una vez finalizada la instalación del paquete, ejecute y siga las indicaciones para establecer la contraseña de SA y elija su edición. Le recordamos que las siguientes ediciones de SQL Server tienen licencia gratuita: Evaluation, Developer y Express.mssql-conf setup

Paso 2: Configuración del servicio

sudo /opt/mssql/bin/mssql-conf setup

Y finalmente

sudo ufw allow 1433/tcp

Una vez realizada la configuración, compruebe que el servicio se está ejecutando:

systemctl status mssql-server --no-pager

Nota: Hacer lo mismo en la instancia. Crear regla para permitir el puerto 1433

Instalación de las herramientas de línea de comandos de SQL Server

Siga estos pasos para instalar mssql-tools18 en Ubuntu.

curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc

curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list

Actualice la lista de fuentes y ejecute el comando de instalación con el paquete de desarrollador unixODBC.

sudo apt-get update 
sudo apt-get install mssql-tools18 unixodbc-dev
  1. Opcional: Agregue a su variable de entorno en un shell bash./opt/mssql-tools18/bin/PATH

    Para que sqlcmd y bcp sean accesibles desde el shell bash para las sesiones de inicio de sesión, modifique su en el archivo con el siguiente comando:PATH~/.bash_profile

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

    Para que sqlcmd y bcp sean accesibles desde el shell bash para sesiones interactivas/sin inicio de sesión, modifique el en el archivo con el siguiente comando:PATH~/.bashrc

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

Conéctese localmente

En los pasos siguientes se usa sqlcmd para conectarse localmente a la nueva instancia de SQL Server.

  1. Ejecute sqlcmd con parámetros para el nombre de SQL Server (), el nombre de usuario () y la contraseña (). En este tutorial, se está conectando localmente, por lo que el nombre del servidor es . El nombre de usuario y la contraseña son los que proporcionó para la cuenta de SA durante la configuración.-S-U-Plocalhostsa

    sqlcmd -S localhost -U sa -P 'MiNiCo57**' -C -N -C -v TrustServerCertificate=true
    
SELECT name, database_id, create_date  
FROM sys.databases;  
GO

Instalacion con Docker

  1. Instalar Docker (si aún no lo tienes)
sudo apt update sudo apt install -y docker.io sudo systemctl enable --now docker

Verifica que Docker está funcionando:

docker --version

2. Descargar e iniciar un contenedor MySQL

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=MiNiCo57**' \
   -p 1433:1433 \
   -v /mnt/d/academia/bd:/var/opt/mssql/backups \
   --name sqlserver-container \
   -d mcr.microsoft.com/mssql/server:2022-latest

3. Verificar que el contenedor esté corriendo

docker ps

Si el contenedor está corriendo, verás algo como:

Si está en ejecución, verás algo como:

Si está en ejecución, verás una salida similar a:

CONTAINER ID IMAGE STATUS PORTS NAMES abcdef123456 mcr.microsoft.com/mssql/server:2022-latest Up X minutes 0.0.0.0:1433->1433/tcp sqlserver-container

Instalar mssql-tools dentro del contenedor

# 1. Actualiza e instala paquetes requeridos
sudo apt update && sudo apt install -y curl apt-transport-https gnupg

# 2. Agrega la clave GPG de Microsoft (con apt-key obsoleto pero funcional)
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

# 3. Agrega el repositorio de Microsoft SQL Server
echo "deb [arch=amd64,arm64] https://packages.microsoft.com/ubuntu/22.04/prod jammy main" | sudo tee /etc/apt/sources.list.d/mssql-release.list

# 4. Actualiza los repositorios con la nueva fuente
sudo apt update

# 5. Acepta la licencia de Microsoft e instala mssql-tools y unixODBC
sudo ACCEPT_EULA=Y apt install -y mssql-tools unixodbc-dev

# 6. Agrega mssql-tools al PATH de tu usuario
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

# 7. Recarga la configuración del shell actual
source ~/.bashrc

Ahora puedes ejecutar sqlcmd dentro del contenedor:

sqlcmd -S localhost -U SA -P 'MiNiCo57**'
exit

Remover el Contenedor

docker stop sqlserver-container 
docker rm sqlserver-container

Configuración en conexión con DBeaver

Para crear una base de datos, acceda a las siguientes opciones:

Botón derecho encima de DataBases

Copias de Respaldo (Backup)

Verificar que al momento de crer el contenedor en Docker tenga la opcion:

-v /mnt/d/academia/bd:/var/opt/mssql/backups

En caso que no tenga dicha ocpion, debe eliminar el contenedor y crearlo nuevamente segun las indicaciones en esta guia - parte superior.\

  • /mnt/d/academia/bd Esta carpeta se debe crear manualmente en su disco duro, en mi caso utilice la unidad d y las carpeta academia/bd. use la que considere

  • /var/opt/mssql/backups esta carpeta si debe dejarla igual

Existen diferentes opciones:

Backup con MS SQL Server Management

Luego verificar el archivo en la carpeta que definio manualmente en docker.

Backup con Dbeaver

Luego verificar el archivo en la carpeta que definio manualmente en docker.

Cuando el backup no se genera en el mismo equipo

sudo docker cp almacen_2025_iisem_node.bak sqlserver-container:/var/opt/mssql/backups/

Luego entrar y verificar archivos

docker exec -it mysql-server sh

Backup

Script WSL/Linux

CONTAINER=sqlserver-container          # nombre del contenedor (p.ej. "sqlserver" o "mssql")
SA_PASSWORD='MiNiCo57**'
DB=almacen_2025_iisem_node
STAMP=$(date +%F)            # 2025-10-01

# 1) Asegura la carpeta de backups dentro del contenedor
docker exec "$CONTAINER" bash -lc "mkdir -p /var/opt/mssql/backups"

# 2) Ejecuta el BACKUP dentro del contenedor
docker exec "$CONTAINER" bash -lc "
/opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P $SA_PASSWORD -C -Q \"
BACKUP DATABASE [$DB]
TO DISK = N'/var/opt/mssql/backups/${DB}_${STAMP}.bak'
WITH FORMAT, INIT, NAME = 'Backup completo desde DBeaver';
\"
"

# 3) (Opcional) Copia el .bak al host
CID=$(docker inspect -f '{{.Id}}' "$CONTAINER")
docker cp ${CID}:/var/opt/mssql/backups/${DB}_${STAMP}.bak .

Script Dbeaver

BACKUP DATABASE almacen_2025_iisem_node
TO DISK = N'/var/opt/mssql/backups/almacen_2025_iisem_node.bak'
WITH FORMAT, INIT, NAME = 'Backup completo desde DBeaver';

Restaurar WSL-Linux Terminal

sudo docker exec -i sqlserver-container bash -lc "/opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P 'MiNiCo57**' -C -d master -Q \"ALTER DATABASE [almacen_2025_iisem_node] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE [almacen_2025_iisem_node] FROM DISK=N'/var/opt/mssql/backups/almacen_2025_iisem_node.bak' WITH REPLACE, RECOVERY, STATS=10; ALTER DATABASE [almacen_2025_iisem_node] SET MULTI_USER;\""