SQL Server hosten op een Linux-machine

0000003190     -      12-09-2025

Voor Mercator is er geen enkel verschil of SQL Server geïnstalleerd is op een Windows- of Linuxserver. Mercator is namelijk de client van de database, in de zin van "client-server", maakt het geen verschil.

Hier zijn een paar richtlijnen om SQL Server op een Linux machine te installeren. Gezien de diversiteit van Linux-distributies kan het nodig zijn om de onderstaande instructies aan te passen. Ze werken in een Ubuntu-omgeving. De firewall configuratiecommando's worden gegeven voor UFW. (Er wordt aangenomen dat UFW al geconfigureerd en operationeel is)

1. Directe installatie van SQL Server

Om een 2019 versie van SQL Server te installeren, volgt u de instructies op deze pagina. Houd er rekening mee dat de beschreven installatie niet compatibel is met alle versies van Ubuntu. Volgens de documentatie is installatie enkel mogelijk op versie 20.04.

Na de installatie moet u mogelijk de SQL-poorten op uw firewall openen voor strikt lokaal gebruik (pas de regel aan uw lokale netwerk aan):

sudo ufw allow from 192.168.1.0/24 to any port 1433 proto tcp
sudo ufw enable

Eenmaal geïnstalleerd is het mogelijk om verbinding te maken met de SQL-server vanuit clienttools die geïnstalleerd zijn op een Windows-pc.

Om een back-up terug te zetten, hoeft u deze alleen maar te uploaden naar de Linux-machine met behulp van WinSCP (bijvoorbeeld). De back-up kan vervolgens worden hersteld met de clienttools die op een Windows-pc zijn geïnstalleerd.

2. Installatie via een Docker-container

Als uw versie van Linux niet wordt ondersteund voor directe installatie, kunt u een Docker-container met SQL Server installeren. Hiervoor moet u eerst Docker installeren door de instructies op deze pagina te volgen.

Vervolgens moet u de Docker-container met SQL Server opzetten volgens de instructies op deze pagina.

Hieronder staat een volledige commandoregel voor het installeren van een SQL Express 2019-versie (zonder gedeelde map tussen de container en de host):

sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" -e "MSSQL_PID=Express" \
   -p 192.168.1.1:1433:1433 --name sql1 --hostname sql1 \
   -d  --restart=always \
   mcr.microsoft.com/mssql/server:2019-latest

Let op de volgende punten:

  • De parameter MSSQL_PID moet worden opgegeven, anders wordt standaard een ontwikkelaarsversie geïnstalleerd. Mogelijke waarden zijn 
    • Developer
    • Express
    • Standard
    • Enterprise
    • EnterpriseCore
  • -d geeft aan dat de docker als daemon draait, dus op de achtergrond.
  • --restart=always geeft aan dat docker gestart moet worden wanneer de machine opstart.
  • -p 192.168.8.1:1433:1433 geeft aan op welke poort en IP de SQL-server moet luisteren. Dit punt is essentieel omdat het standaard op alle netwerkinterfaces luistert, inclusief degene die overeenkomt met het publieke IP.
  • het is niet mogelijk om verkeer naar de docker te beperken met UFW omdat de docker direct de iptables firewall beheert, net als UFW. Verkeer kan daarom worden beperkt door iptables direct in te stellen, of via de -p parameter zoals hierboven.
  • het SA-wachtwoord moet onmiddellijk worden gewijzigd, omdat het wachtwoord dat op de commandoregel wordt doorgegeven als docker-omgevingsvariabele in "platte" tekst leesbaar is. Deze wijziging kan eenvoudig worden doorgevoerd met de clienttools die op een Windows-pc zijn geïnstalleerd.

Om de aanwezige dockers op te lijsten en hun ID te achterhalen:

sudo docker ps -a

Om een bestaande docker bij te werken, bijvoorbeeld:

sudo docker update --restart=always 9998877aa9xx

waarbij 9998877aa9xx de id is die is verkregen met het vorige commando

Om een back-up terug te zetten, upload je deze gewoon naar de Linux-machine met WinSCP (bijvoorbeeld). Laad het vervolgens in de Docker-container:

sudo docker cp mydb.bak sql1:/var/opt/mssql/mydb.bak

De back-up kan dan worden hersteld met de clienttools die zijn geïnstalleerd op een Windows-pc.

Het bak-bestand kan dan worden verwijderd uit de container:

sudo docker exec 9998877aa9xx rm /var/opt/mssql/mydb.bak

 

Het kan eenvoudiger zijn om een gedeelde map aan te maken tussen de host (de Linux-machine) en de container. Maak hiervoor eerst de directory aan, bijvoorbeeld:

mkdir /home/myuser/baksql

Maak vervolgens de container aan met deze gedeelde map:

sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" -e "MSSQL_PID=Express" -p 192.168.8.1:1433:1433 --name sql1 --hostname sql1 -d -v /home/myuser/baksql:/var/opt/mssql/baksql --restart=always mcr.microsoft.com/mssql/server:2019-latest

Dit maakt het mogelijk om bijvoorbeeld SQL back-ups te maken die in deze directory worden geplaatst en eenvoudig kunnen worden opgehaald vanaf de Linux-machine.

 Het is niet mogelijk om een gedeelde map toe te voegen aan een container die al is aangemaakt.


Sinds Mercator versie 12.0 zijn CLR-functies en -procedures ook beschikbaar voor een Linux SQL Server. 


Belangrijke overwegingen met betrekking tot MercatorShield

SQL Server onder Linux ondersteunt geen SQL CLR-functies (dus .net) die gebruik maken van het netwerk. Daardoor is het niet mogelijk om de "cloud"-configuratie van MercatorShield te gebruiken. Dit is echter geen blokkering en vereist enkel het (gratis) toevoegen van SHIELD=n aan de voucher, om toegang te krijgen tot de Linux-server.

Het wordt altijd aanbevolen om MercatorShieldService op dezelfde server te installeren als SQL Server, dus op de Linux-machine. Volg de instructies voor Linux op deze pagina.

  • Installatie op een Linux-machine
  • Geavanceerde informatie (Linux)


Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)