Montar un SQL Server 2022 en contenedor Docker en NAS QNAP

Muchos de los programas que desarrollamos en Access utilizan bases de datos externas a Access. Bases de datos más potentes o con más disponibilidad y susceptibles de fallar menos al estar en la nube. En AccessUserGroups hemos hablado de ellas muchas veces co diferentes propuestas. Todas ellas muy potentes a la hora de elegirlas como Back-End de nuestra aplicación Access.

En esta ocasión Tonny Sanjiao nos trae una propuesta interesante para aquellos que tiene en su empresa un servidor NAS Qnap para copias de seguridad o como disco de red. Tonny nos enseñará a montar un SQL Server 2022 sobre un contenedor Docker dentro del Servidor Qnap.

 

 

Documentación complementaria de la charla

 

Cómo configurar un contenedor Docker en QNAP con SQL SERVER 2022
Hay que logarse en el QNAP con el usuario admin para tener todos los permisos posibles a disposición.

Crear la carpeta compartida /Container:
Ir a ControlPanel>Privilegio>Carpetas Compartidas y Crear la carpeta Container. Ha de tener permisos sólo para los administradores y ha de estar oculta para la red.

Crear el árbol de carpetas en QNAP:
Vamos a Filestation y creamos el resto de subcarpetas:
/Container/datos
/Container/datos/conchi
/Container/datos/conchi/backup
/Container/datos/conchi/data
/Container/datos/conchi/dump
/Container/datos/conchi/log
/Container/datos/conchi/secrets

Instalar el CONTAINER STATION de QNAP:
Ir al AppCenter>Todas las aplicaciones, buscamos Container Station y le damos a instalar.
Luego lo abrimos y la primera vez nos sugerirá hacer la instalación en una carpeta llamada ‘/Container’

Activar el SSH y acceder desde Windows por SSH:
Vamos a ControlPanel>SERVICIOS DE RED Y DE…>TELNET/SSH:
Activar PERMITIR CONEXION SSH y ponemos un puerto, por ejemplo el 60028
Activar el «Activar SFTP»

Acceder desde CMD de Windows al SSH:
WINDOWS+R CMD
Escribir: ssh admin@192.168.0.2 -p 60028

Localizar en internet la versión que queramos de SQL Server:
Vamos a https://hub.docker.com/_/microsoft-mssql-server, en featured tags, nos interesa en nuestro caso por ejemplo: ‘2022-latest’ y su dirección es: ‘docker pull mcr.microsoft.com/mssql/server:2022-latest’
Pero nos quedaremos con ‘mcr.microsoft.com/mssql/server:2022-latest’

Descargamos la imagen del contenedor oficial, para ello Ejecutar la instrucción desde SSH:
docker pull mcr.microsoft.com/mssql/server:2022-latest

Instalación del SQL Server:
Iremos a ContainerStation en nuestro QNAP, Imágenes, iremos a la imagen que nos interesa que aparecerá en el listado y clicaremos en el botón + que aparece a su derecha que indica crear contenedor en la columna de acciones.
Aparecerán los siguientes parámetros:
Imagen: mcr.microsoft.com/mssql/server:2022-latest
Tipo: Docker
Nombre (que le pondremos a nuestro contenedor): SQLserver2022
Comando: /opt/mssql/bin/sqlservr
Punto de entrada: /opt/mssql/bin/permissions_check.sh
Extraer la imagen del registro antes de crear el contendor (ni idea de lo que hace): No marcado
Tiempo de ejecución: runc
Inicio automático: ON si queremos que al reiniciar el QNAP por cualquier motivo se inice SQL Server automáticamente.
Limite CPU: 100%. Aquí a gusto de cada uno.
Limite memoria: Dejo el valor máximo que permite. Aquí a gusto.

Configuración avanzada: (NOTA: lo que aparece entre paréntesis son explicaciones, no deben incluirse los paréntesis ni lo que hay dentro)
Entorno:
CONFIG_EDGE_BUILD=0
MSSQL_RPC_PORT=135
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ACCEPT_EULA=Y
SA_PASSWORD=PerroCanino.1714
MSSQL_LCID (id de idioma para español)=3082
MSSQL_PID (qué versión queremos instalar: Standard/Express/Developer)=Standard
MSSQL_AGENT_ENABLED (que tengamos disponible el SQL Agent)=true
TZ (Time Zone)= Europe/Madrid
MSSQL_COLLATION (la colación no tiene en cuenta las mayúsculas ni los acentos por defecto, si queremos tenerlos en cuenta, deberemos escoger otra)= Modern_Spanish_CI_AI
MSSQL_BACKUP_DIR= /var/opt/mssql/backup
MSSQL_DATA_DIR= /var/opt/mssql/data
MSSQL_LOG_DIR= /var/opt/mssql/log
MSSQL_DUMP_DIR=/var/opt/mssql/dump

Red:
Nombre del host: Conchi
Dirección MAC: la que salga por defecto
Modo de red (prefiero utilizar un puerto que una ip): NAT
Reenvío de puertos:
Host (es puerto que utilizaremos desde fuera del contenedor, por defecto sería 1433, pero prefiero ocultarlo a la red utilizando otro): 61433
Contenedor (puerto interno del contenedor, dejar éste): 1433
Protocolo: TCP

Dispositivo:
Asignar procesos interactivos y de TTY para el contenedor: SÍ
Ejecutar contenedores en Modo privilegiado: NO

Carpetas compartidas:
Apartado del volumen del Host:
Volumen del host: /contenedor/datos/conchi/backup
Punto de montura: /var/opt/mssql/backup
Lectura: SÍ
Escritura: SÍ

Volumen del host: /contenedor/datos/conchi/data
Punto de montura: /var/opt/mssql/data
Lectura: SÍ
Escritura: SÍ

Volumen del host: /contenedor/datos/conchi/dump
Punto de montura: /var/opt/mssql/dump
Lectura: SÍ
Escritura: SÍ

Volumen del host: /contenedor/datos/conchi/log
Punto de montura: /var/opt/mssql/log
Lectura: SÍ
Escritura: SÍ

Volumen del host: /contenedor/datos/conchi/secrets
Punto de montura: /var/opt/mssql/secrets
Lectura: SÍ
Escritura: SÍ

Instalar datos de Ejemplo de Northwin:
https://github.com/microsoft/sql-server-samples/tree/master/samples/databases/northwind-pubs
Ir a instnwnd.sql
Download
Seleccionar con CONTROL+A
CONTROL+C para copiar

Abrir el Microsoft Management Studio, si no lo tienes entonces instalar Microsoft Management Studio, la última versión que haya:
https://aka.ms/ssmsfullsetup

Seguimos y pegaremos el northwin en SSMS en una consulta nueva.

Instalar Microsoft Visual C++ Redistributable:
https://docs.microsoft.com/es-es/cpp/windows/latest-supported-vc-redist?view=msvc-170

Instalar el driver ODBC Microsoft ODBC Driver 17 for SQL Server (la versión 17 es la que me va mejor):
https://docs.microsoft.com/es-es/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16

Crear la conexión ODBC bajo Windows del tipo 64Bits si nuestro Windows es 64 bits. Nada que ver con el Access que tengamos:
Ir a Panel de control\Todos los elementos de Panel de control\Herramientas de Windows\Orígenes de Datos ODBC (64 Bits)

Agregamos la conexión del tipo ODBC DRIVER 17 FOR SQL SERVER:
Nombre: Conchi
Servidor: 192.168.0.2,61433
Con la autenticación de SQL Server
Usuario: sa
Password: PerroCanino.1714

Con ésto ya tenemos la conexión preparada para Access.

A ver si alguien caritativo me sabe completar ésta instrucción para la instalación de SQL Server en Docker:
Ejecutar la instrucción para instalar el contenedor:
docker run -itd \
-p 65433:1433 \
–name=SQLserver2022 \
–restart=always \
–init=/opt/mssql/bin/sqlservr \
–entrypoint=/opt/mssql/bin/permissions_check.sh \
-e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
-e ACCEPT_EULA=Y \
-e SA_PASSWORD=PerroCanino.1714 \
-e MSSQL_LCID= 3082 \
-e MSSQL_PID=Standard \
-e MSSQL_AGENT_ENABLED=true \
-e TZ= Europe/Madrid \
-e MSSQL_COLLATION= Modern_Spanish_CI_AI \
-e MSSQL_BACKUP_DIR= /var/opt/mssql/backup \
-e MSSQL_DATA_DIR= /var/opt/mssql/data \
-e MSSQL_LOG_DIR= /var/opt/mssql/log \
-e MSSQL_DUMP_DIR=/var/opt/mssql/dump \
-v /contenedor/datos/conchi/backup:/var/opt/mssql/backup \
-v /contenedor/datos/conchi/data:/var/opt/mssql/data \
-v /contenedor/datos/conchi/dump:/var/opt/mssql/dump \
-v /contenedor/datos/conchi/log:/var/opt/mssql/log \
-v /contenedor/datos/conchi/secrets:/var/opt/mssql/secrets \
mcr.microsoft.com/mssql/server:2022-latest

Deja una respuesta