Microsoft SQL Server Express Linuxon: natívan és Dockerben

Linux 17 perc olvasás

A Microsoft SQL Server 2017 óta Linuxon is fut, és az ingyenes Express kiadás Linuxon is használható éles rendszerben. Ha egy alkalmazásnak MSSQL adatbázis kell, ehhez nem feltétlenül kell Windows Server: elég egy Linuxos KVM VPS, amelyen az SQL Server rendszerszolgáltatásként vagy Docker konténerben fut.

Ez a cikk mindkét utat bemutatja, és összeveti a Linuxos Expresst a Windowson futóval: mi ugyanaz, mi hiányzik Linuxon, és mikor jobb mégis a Windows. Az SQL Server kiadásairól és üzemeltetéséről általánosságban az MSSQL útmutatónkban olvashat.

A lépéseket 2026 novemberében egy AlmaLinux 10.2 rendszerű, x86_64-es virtuális gépen próbáltuk ki, az SQL Server 2025 RTM-CU10 (17.0.5035.5) változatával, natívan és Docker CE 29.9 alatt is. A parancsokat sudo-val vagy root felhasználóként futtassa.

Mielőtt belekezd

  • Csak x86_64 (Intel, AMD) processzoron fut. ARM processzorra (például Ampere vagy Apple Silicon) nincs se csomag, se konténerkép, és a Microsoft az emulációt (Rosetta, QEMU) sem támogatja.
  • Legalább 2 GB memória kell. Ennél kevesebbel el sem indul. A teszten 1 GB memóriával a szolgáltatás azonnal leállt ezzel az üzenettel:

    sqlservr: This program requires a machine with at least 2000 megabytes of memory.
    

    2 GB-tal elindult, de a rendszernek és az SQL Servernek is szűkösen jut hely. Express kiadáshoz legalább 4 GB memória ajánlott.

  • Támogatott rendszerek. Az SQL Server 2025 hivatalosan a Red Hat Enterprise Linux 9 és 10, valamint az Ubuntu 22.04 és 24.04 rendszeren támogatott, XFS vagy ext4 fájlrendszeren. A SUSE-t a 2025-ös verzió már nem támogatja. Az AlmaLinux és a Rocky Linux a RHEL-lel binárisan kompatibilis, a RHEL-es csomagok gond nélkül települnek és futnak rajtuk, de a Microsoft hivatalosan nem sorolja fel őket. Ha a hivatalos támogatás fontos, válasszon Ubuntu 24.04-et, vagy futtassa az SQL Servert Dockerben, amely bármely x86_64-es Linuxon támogatott.
  • Melyik verzió hová? AlmaLinux 10-re csak az SQL Server 2025 telepíthető (a 2022-eshez nincs RHEL 10-es tároló), AlmaLinux 9-re a 2022-es és a 2025-ös is.

Natív vagy Docker?

  Natív telepítés Docker konténer
Telepítés Microsoft-tároló, dnf install Egy docker run parancs
Frissítés dnf update mssql-server Új kép letöltése, a konténer újralétrehozása
Indítás, leállítás systemd szolgáltatás (mssql-server) Docker, újraindítási szabállyal
SELinux Saját házirend-csomag (mssql-server-selinux) A Docker kezeli
Tűzfal A firewalld szabályai érvényesek A közzétett port megkerüli a firewalldt (lásd lent)
Helyfoglalás Kb. 2,5 GB (/opt/mssql) A kép 2,4 GB a lemezen
Mire jó Egy adatbázis-szerver hosszú távra Több verzió egymás mellett, fejlesztés, gyors csere

Ha a szerveren csak az SQL Server fut, a natív telepítés az egyszerűbb: rendszerszolgáltatásként indul, a dnf frissíti, és a tűzfal úgy működik, ahogy várja. A Docker akkor jobb, ha a gépen már konténerekben futnak az alkalmazások, vagy ha több SQL Server-verziót szeretne egymás mellett.

A) Natív telepítés AlmaLinux 10-re

1. A tároló és a csomag

curl -fsSL https://packages.microsoft.com/config/rhel/10/mssql-server-2025.repo | sudo tee /etc/yum.repos.d/mssql-server-2025.repo
sudo dnf install -y mssql-server

AlmaLinux 9 esetén a címben a rhel/10 helyett rhel/9 szerepeljen. Az SQL Server 2022-höz a mssql-server-2022.repo fájl kell; ezt csak a rhel/9 útvonal alatt találja meg.

A dnf az első telepítéskor rákérdez a Microsoft csomagaláíró kulcsára; fogadja el. A csomag a /opt/mssql mappába települ, az adatbázisok a /var/opt/mssql alá kerülnek.

2. Kiadás és sa jelszó

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

A program először a kiadást kérdezi:

Choose an edition of SQL Server:
  1) Evaluation (free, no production use rights, 180-day limit)
  2) Enterprise Developer (free, no production use rights)
  3) Standard Developer (free, no production use rights)
  4) Express (free)
  5) Standard (PAID)
  ...
Enter your edition(1-10):

Az Expresshez írja be a 4-et, fogadja el a licencfeltételeket, majd adja meg kétszer a rendszergazda (sa) jelszavát. A jelszó legalább 8 karakter legyen, és a kisbetű, nagybetű, szám és írásjel közül legalább háromféle karaktert tartalmazzon. Ha nem felel meg ezeknek, a beállítás hibával leáll.

Szkriptből kérdések nélkül is beállítható:

sudo MSSQL_PID=Express ACCEPT_EULA=Y MSSQL_SA_PASSWORD='Hosszu-Egyedi-Jelszo-1' /opt/mssql/bin/mssql-conf -n setup

A jelszó így bekerül a parancselőzményekbe; a beállítás után törölje onnan, vagy használja az interaktív változatot.

A beállítás végén a szolgáltatás elindul, és rendszerindításkor is elindul:

systemctl status mssql-server --no-pager

3. A parancssori eszközök

A sqlcmd és a bcp külön csomagban érkezik, a Microsoft általános tárolójából:

curl -fsSL https://packages.microsoft.com/config/rhel/10/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
sudo ACCEPT_EULA=Y dnf install -y mssql-tools18 unixODBC-devel
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

Próbálja ki a kapcsolatot:

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

A -C kapcsoló kötelező: az mssql-tools18 titkosított kapcsolatot kér, az SQL Server pedig telepítés után saját aláírású tanúsítványt használ. Nélküle ez a hiba jön:

SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]

A teszten a válasz:

Microsoft SQL Server 2025 (RTM-CU10) (KB5125471) - 17.0.5035.5 (X64)
    Express Edition (64-bit) on Linux (AlmaLinux 10.2 (Lavender Lion)) <X64>

A jelszót a sqlcmd bekéri (Password:), vagy a SQLCMDPASSWORD környezeti változóból veszi. A -P jelszo kapcsoló is működik, de a jelszó így a folyamatlistában is látszik.

4. SELinux

AlmaLinuxon az SQL Server alapból korlátozás nélküli (unconfined_service_t) folyamatként fut. A Microsoft külön SELinux-házirendet ad hozzá, amely saját, szűkebb tartományba (mssql_server_t) zárja:

sudo dnf install -y mssql-server-selinux
sudo systemctl restart mssql-server
ps -eZ | grep sqlservr

A teszten a házirenddel is hiba nélkül futott minden, köztük a lent bemutatott mentés is. A /var/opt/mssql mappán kívülre viszont a házirend nem enged írni: egy /srv/mssql-backup mappába készülő mentés „Operating system error 5(Access is denied.)” hibával leállt, pedig a mappa tulajdonosa az mssql felhasználó volt. Ilyen mappát lássa el az SQL Server SELinux-címkéjével:

sudo semanage fcontext -a -t mssql_var_t "/srv/mssql-backup(/.*)?"
sudo restorecon -Rv /srv/mssql-backup

5. Memóriakorlát

Linuxon az SQL Server alapból a fizikai memória 80%-át tekinti a sajátjának. Ha a szerveren más is fut (például egy webalkalmazás), adjon meg kisebb korlátot:

sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 3072
sudo systemctl restart mssql-server

Az Express kiadás az adatok gyorsítótárára (buffer pool) amúgy is legfeljebb 1410 MB-ot használ, de a folyamat összesen ennél többet foglal, ezért a korlátot ne állítsa 2 GB alá. Ha elfogy a memória, a kernel leállítja a legnagyobb folyamatot, ami többnyire éppen az SQL Server (lásd: Elfogyott a memória: OOM killer és swap fájl).

A mssql-conf beállításai a /var/opt/mssql/mssql.conf fájlba kerülnek, és újraindítás után érvényesek.

6. Teljes szöveges keresés

Az Express kiadás a 2025-ös verziótól a korábbi „Express with Advanced Services” funkcióit is tartalmazza, köztük a teljes szöveges keresést (Full-Text Search). Linuxon ez külön csomag:

sudo dnf install -y mssql-server-fts
sudo systemctl restart mssql-server

A teszten a CONTAINS keresés Express kiadáson is működött.

B) SQL Server Express Docker konténerben

Ehhez Docker kell a szerveren. AlmaLinuxon a Docker CE a Docker saját tárolójából települ (https://download.docker.com/linux/rhel/docker-ce.repo, csomagok: docker-ce, docker-ce-cli, containerd.io).

Indítás

docker volume create mssql-data

docker run -d --name sql1 --hostname sql1 \
  -e ACCEPT_EULA=Y \
  -e MSSQL_PID=Express \
  -e MSSQL_SA_PASSWORD='Hosszu-Egyedi-Jelszo-1' \
  -p 127.0.0.1:1433:1433 \
  -v mssql-data:/var/opt/mssql \
  --restart unless-stopped \
  mcr.microsoft.com/mssql/server:2025-latest
  • MSSQL_PID=Express: e nélkül a konténer a Developer kiadással indul, amely éles használatra nem licencelt.
  • -v mssql-data:/var/opt/mssql: az adatbázisok egy Docker kötetben vannak, így a konténer törlése és újralétrehozása után is megmaradnak. Kötet nélkül a konténerrel együtt az adatok is elvesznek.
  • -p 127.0.0.1:1433:1433: a port csak a szerveren belülről érhető el. Ennek oka a következő szakaszban olvasható.
  • --restart unless-stopped: a konténer a szerver újraindítása után is elindul.

A konténer a teszten 10 másodperc alatt elindult. A naplóban ellenőrizhető a kiadás:

docker logs sql1 2>&1 | grep -A1 "Microsoft SQL Server 2025"
Microsoft SQL Server 2025 (RTM-CU10) (KB5125471) - 17.0.5035.5 (X64)
    Express Edition (64-bit) on Linux (Ubuntu 24.04.5 LTS) <X64>

A kép Ubuntu alapú, és benne van a sqlcmd is:

docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -C

A Docker megkerüli a tűzfalat

A Docker a konténerek közzétett portjait saját szabályokkal nyitja meg, és ezek megelőzik a firewalld szabályait. A teszten a -p 1433:1433 kapcsolóval indított konténer kívülről is elérhető volt, pedig a firewalldben nem volt szabály az 1433-as portra. Ezért a portot mindig a helyi címre kösse (-p 127.0.0.1:1433:1433), és a távoli elérést SSH-alagúton oldja meg (lásd lent). Ha egy másik szervernek közvetlenül kell elérnie az adatbázist, válassza inkább a natív telepítést, ahol a firewalld szabálya érvényes.

Saját mappa kötet helyett

Ha a Docker kötet helyett egy mappát csatol (-v /srv/mssql:/var/opt/mssql), a mappa tulajdonosa a 10001-es felhasználó legyen, mert a konténerben az SQL Server ezzel az azonosítóval (mssql) fut, nem rootként. Egy root tulajdonú mappával a konténer azonnal leáll:

/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created. ... Permission denied

A megoldás:

sudo mkdir -p /srv/mssql
sudo chown 10001:10001 /srv/mssql

Memóriakorlát a konténerben

A konténer memóriáját a Docker --memory kapcsolójával vagy az SQL Server MSSQL_MEMORY_LIMIT_MB változójával korlátozhatja. A teszten --memory 2g mellett az SQL Server 1639 MB-ot érzékelt (a 2 GB 80%-át), -e MSSQL_MEMORY_LIMIT_MB=2048 mellett pontosan 2048 MB-ot.

Leállítás: a docker stop nem állítja le szabályosan

A konténerben az 1-es folyamat egy indítószkript (launch_sqlservr.sh), amely nem adja tovább a leállítási jelzést az SQL Servernek. A docker stop ezért kivárja a türelmi időt (alapból 10 másodperc), majd kilövi a folyamatot (kilépési kód: 137). A teszten ez az adatokban nem okozott kárt: újraindításkor az SQL Server a tranzakciós naplóból helyreállította az adatbázisokat, és minden lezárt tranzakció megmaradt. Egy szabályos leállítás azonban gyorsabb újraindulást ad, és nem kell helyreállítás.

Ha szabályos leállítást szeretne, indítsa a konténert közvetlenül az SQL Serverrel, a --entrypoint /opt/mssql/bin/sqlservr kapcsolóval (a fenti docker run parancsba, a képnév elé). A teszten így a docker stop azonnal, szabályosan állította le a szervert. A kép indítószkriptje ilyenkor nem fut le, így a mappajogosultság-ellenőrzés sem: egy rossz tulajdonosú mappánál csak az SQL Server saját hibaüzenetét kapja.

Frissítés

Konténernél a frissítés a kép cseréje: töltse le az új képet, törölje a konténert, és indítsa újra ugyanazzal a kötettel.

docker pull mcr.microsoft.com/mssql/server:2025-latest
docker stop sql1
docker rm sql1
# majd a fenti docker run parancs, ugyanazzal a kötettel

A teszten egy SQL Server 2022-es konténer kötetét a 2025-ös kép gond nélkül átvette, az adatbázisok elérhetők maradtak. Visszafelé ez nem működik: egy 2025-ös verzióval megnyitott adatbázis 2022-es verzióval már nem nyitható meg. Frissítés előtt mindig mentsen.

Távoli elérés

A natív telepítés minden hálózati címen figyel az 1433-as porton. Az adatbázis portját soha ne nyissa meg az egész internet felé: az SQL Servert folyamatosan érik jelszópróbálgató támadások.

SSH-alagút (ajánlott): a saját gépén nyisson alagutat a szerverre, és az SQL Server Management Studióval (SSMS) vagy más klienssel a localhost,1433 címre csatlakozzon:

ssh -L 1433:127.0.0.1:1433 felhasznalo@szerver-ip

Ehhez a szerveren semmilyen portot nem kell megnyitni az SSH-n kívül. Az SSH-ról bővebben a Linux Secure Shell (SSH) cikkünkben olvashat.

Engedélyezés egy IP-címről: ha egy másik szerver éri el az adatbázist (natív telepítésnél), a firewalldben csak annak a címét engedje:

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" port port="1433" protocol="tcp" accept'
sudo firewall-cmd --reload

A tűzfal beállításáról általánosan a tűzfal beállítása VPS-en cikk szól. Ha a kapcsolat nem helyi hálózaton halad, a kliensen kapcsolja be a titkosítást, és cserélje a saját aláírású tanúsítványt egy valódira, vagy használja az SSH-alagutat.

Mentés és visszaállítás

Ütemezett mentés systemd időzítővel

Az Express kiadásban a Microsoft szerint nincs SQL Server Agent, így az ütemezett mentést a Linux ütemezője végzi. A teszten Linuxon az Express kiadáson is elindult az Agent (mssql-conf set sqlagent.enabled true), és lefutott vele egy mentési feladat, de mivel a Microsoft kiadás-összehasonlítása szerint az Express nem tartalmazza, éles rendszerben ne építsen rá.

Az alábbi szkript minden felhasználói adatbázisról teljes mentést készít, a 7 napnál régebbieket pedig törli. Natív telepítéshez készült; Dockerben a sqlcmd sort a konténerben kell futtatni (docker exec sql1 /opt/mssql-tools18/bin/sqlcmd ...), a mentések pedig a kötetbe kerülnek.

A jelszó egy csak root által olvasható fájlba kerül:

echo 'SQLCMDPASSWORD=Hosszu-Egyedi-Jelszo-1' | sudo tee /etc/mssql-backup.env
sudo chmod 600 /etc/mssql-backup.env
sudo mkdir -p /var/opt/mssql/backup
sudo chown mssql:mssql /var/opt/mssql/backup

A szkript: /usr/local/bin/mssql-backup

#!/bin/bash
# Minden felhasználói adatbázis teljes mentése
set -euo pipefail
SQLCMD="/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -C -b -h -1 -W"
NAP=$(date +%F)
for DB in $($SQLCMD -Q "SET NOCOUNT ON; SELECT name FROM sys.databases WHERE database_id > 4 AND state_desc = 'ONLINE'"); do
  $SQLCMD -Q "BACKUP DATABASE [$DB] TO DISK = N'/var/opt/mssql/backup/${DB}_${NAP}.bak' WITH INIT, CHECKSUM"
done
find /var/opt/mssql/backup -name "*.bak" -mtime +7 -delete

A szkript szóközt tartalmazó adatbázisnévvel nem működik. Tegye futtathatóvá: sudo chmod 755 /usr/local/bin/mssql-backup.

A szolgáltatás: /etc/systemd/system/mssql-backup.service

[Unit]
Description=SQL Server adatbázisok mentése
After=mssql-server.service

[Service]
Type=oneshot
EnvironmentFile=/etc/mssql-backup.env
ExecStart=/usr/local/bin/mssql-backup

Az időzítő: /etc/systemd/system/mssql-backup.timer

[Unit]
Description=SQL Server mentés minden éjjel 2-kor

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

Bekapcsolás és egy próbamentés:

sudo systemctl daemon-reload
sudo systemctl enable --now mssql-backup.timer
sudo systemctl start mssql-backup.service
journalctl -u mssql-backup.service -n 5

A Persistent=true miatt a kimaradt mentés (például mert a szerver éppen nem futott) a következő indításkor lefut. Ha inkább a cront használná, a szkript onnan is indítható (lásd: Crontab szintaxis és ütemezett feladatok Linuxon).

A mentéseket rendszeresen másolja egy másik gépre is, például rsync-kel (lásd: Fájlok másolása szerverek között): a szerverrel együtt elvesző mentés nem véd semmitől.

Az Express kiadás nem tud tömörített mentést készíteni. A WITH COMPRESSION kapcsolóval ezt a hibát kapja:

Msg 1844, Level 16, State 1
BACKUP DATABASE WITH COMPRESSION is not supported on Express Edition (64-bit).

A kész .bak fájlokat tömörítse utólag, például zstd-vel vagy gzip-pel.

Windowsos mentés visszaállítása Linuxon

A mentési fájlok formátuma Windowson és Linuxon ugyanaz, így egy Windowsos SQL Serverről készült .bak fájl Linuxon is visszaállítható, ha a Linuxos verzió azonos vagy újabb. A mentésben azonban Windowsos útvonalak szerepelnek (C:\Program Files\...), ezért a fájlokat a WITH MOVE kapcsolóval át kell helyezni. Először listázza ki a mentésben lévő fájlok logikai nevét:

RESTORE FILELISTONLY FROM DISK = N'/var/opt/mssql/backup/AdventureWorksLT2022.bak';

Ezután állítsa vissza a logikai nevekkel:

RESTORE DATABASE AdventureWorksLT
FROM DISK = N'/var/opt/mssql/backup/AdventureWorksLT2022.bak'
WITH MOVE 'AdventureWorksLT2022_Data' TO '/var/opt/mssql/data/AdventureWorksLT.mdf',
     MOVE 'AdventureWorksLT2022_Log'  TO '/var/opt/mssql/data/AdventureWorksLT_log.ldf';

A teszten a Microsoft Windowson készült AdventureWorksLT2022 mintaadatbázisa így hiba nélkül visszaállt. WITH MOVE nélkül ez a hiba jön:

Directory lookup for the file "C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorksLT2022.mdf" failed with the operating system error 2(The system cannot find the file specified.).

A mentési fájlt az mssql felhasználónak olvasnia kell. Natív telepítésnél másolja a /var/opt/mssql/backup mappába, és adja a tulajdonát az mssql felhasználónak (sudo chown mssql:mssql fajl.bak). Dockernél a docker cp a fájlt root tulajdonnal másolja a konténerbe, és ilyenkor a visszaállítás „Operating system error 5(Access is denied.)” hibával leáll. Másolás után adja át a fájlt:

docker cp AdventureWorksLT2022.bak sql1:/var/opt/mssql/backup/
docker exec -u 0 sql1 chown mssql:mssql /var/opt/mssql/backup/AdventureWorksLT2022.bak

Ugyanez működik visszafelé is: a Linuxon készült mentés Windowson is visszaállítható, ugyanilyen vagy újabb verzióra.

Az Express korlátai, Linuxon és Windowson

Az Express kiadás korlátai a rendszertől függetlenek, Linuxon ugyanazok, mint Windowson (SQL Server 2025):

Korlát Express
Processzor 1 foglalat vagy 4 mag, amelyik kevesebb
Adatgyorsítótár (buffer pool) 1410 MB
Columnstore és memóriaoptimalizált adatok 352 MB adatbázisonként
Adatbázisméret 50 GB adatbázisonként (a 2022-es és korábbi verzióknál 10 GB)
SQL Server Agent Nincs
Tömörített mentés Nincs
Database Mail Nincs

Az 50 GB az adatfájlokra vonatkozik, a tranzakciós naplót nem számolja bele. A teszten egy 51 201 MB-os adatbázis létrehozása ezzel a hibával állt le:

Msg 1827, Level 16, State 4
CREATE DATABASE or ALTER DATABASE failed because the resulting cumulative database size would exceed your licensed limit of 51200 MB per database.

A gyakorlatban többnyire a memória a szűk keresztmetszet: ha a gyakran használt adatok nem férnek el az 1410 MB-os gyorsítótárban, az Express lemezről olvas, és lassul, akármekkora a szerver. Ezért az Expresshez nem érdemes 8 GB-nál több memóriájú szervert bérelni, ha csak az adatbázis fut rajta.

Ami Linuxon nem érhető el

Az SQL Server motorja Linuxon ugyanaz, mint Windowson: a T-SQL, a tárolt eljárások, a triggerek, a nézetek, a teljes szöveges keresés és a mentési formátum is egyezik. A legtöbb .NET, PHP, Python vagy Node.js alkalmazás észre sem veszi, hogy az adatbázis Linuxon fut. Néhány, főleg a Windowshoz kötődő funkció azonban hiányzik (a Microsoft listája alapján, SQL Server 2025):

  • FILESTREAM és FileTable: fájlok tárolása az adatbázis mellett, Windowsos fájlrendszerben.
  • CLR-szerelvények EXTERNAL_ACCESS vagy UNSAFE jogosultsággal: a SAFE szerelvények futnak, a fájlrendszert vagy a hálózatot elérő .NET-kód nem.
  • Rendszerszintű kiterjesztett tárolt eljárások, például az xp_cmdshell.
  • Csatolt szerver (linked server) nem SQL Server adatforrásra, például Access, Excel vagy más ODBC-forrás felé. SQL Server felé működik.
  • Merge replikáció.
  • Analysis Services és Reporting Services: ezek Linuxon nem futnak (a Reporting Services helyett a Microsoft a Power BI Report Servert ajánlja, amely csak Windowson fut).
  • Windows-hitelesítés helyi Windows-fiókokkal: Linuxon alapból csak SQL Server-felhasználókkal lehet belépni. Active Directory-hitelesítés beállítható (a szervert a tartományba kell léptetni, Kerberos-kulccsal), de ez külön munka.
  • LocalDB: az Express fejlesztői változata csak Windowsra létezik.
  • SQL Server Management Studio (SSMS) a szerveren: az SSMS csak Windowson fut. Egy Windowsos gépről ugyanúgy csatlakozhat vele a Linuxos szerverhez, mint egy Windowsoshoz; Linuxon és macOS-en a Visual Studio Code MSSQL bővítménye vagy a sqlcmd használható.

Ha az alkalmazása ezek közül egyiket sem használja, az SQL Server Linuxon ugyanúgy működik.

Előnyök és hátrányok a Windowsos Expresshez képest

A Linux mellett szól:

  • Nincs Windows Server licenc. Az Express mindkét rendszeren ingyenes, de Windowson az operációs rendszer licence pénzbe kerül. Egy 4 GB-os KVM VPS (AMD VPS 4) havonta 4 800 Ft, a legkisebb Windows VPS (Win VPS Start, 8 GB) havonta 8 400 Ft.
  • Kevesebb erőforrás. A Linux grafikus felület nélkül jóval kevesebb memóriát és tárhelyet használ, mint a Windows Server, így a szerver erőforrásaiból több marad az adatbázisnak.
  • Egyszerű frissítés és automatizálás. Az SQL Server frissítése egy dnf update vagy egy képcsere, a beállítások szkriptelhetők, a konténer pedig percek alatt áthelyezhető egy másik szerverre.
  • Közös szerver a Linuxos alkalmazásokkal. Ha a webalkalmazás (PHP, Python, Node.js, .NET) is Linuxon fut, az adatbázis ugyanazon a gépen lehet, és kívülről nem is kell elérni.

A Windows mellett szól:

  • Windowsos alkalmazások és funkciók. Ha a program Windows-hitelesítést, FILESTREAM-et, xp_cmdshell-t, Access- vagy Excel-forrásra mutató csatolt szervert, Reporting Servicest vagy Windowsos szolgáltatásként futó saját komponenst használ, maradjon Windowson.
  • Grafikus kezelés a szerveren. Az SSMS és a Windows-eszközök közvetlenül a szerveren, távoli asztalon futnak; Linuxon minden parancssorból vagy egy másik gépről megy.
  • Megszokott környezet. Ha a csapat Windows-adminisztrációhoz ért, a Linux bevezetése tanulással jár.
  • Gyártói támogatás. A Windows Server minden kiadásán hivatalosan támogatott, Linuxon csak a felsorolt disztribúciókon (AlmaLinuxon és Rocky Linuxon nem).

Hibaelhárítás

A szolgáltatás nem indul el, „Start request repeated too quickly”. Az mssql-server szolgáltatás 2 percen belül legfeljebb háromszor indulhat el. Ha a beállítások próbálgatása közben többször újraindította, a systemd letiltja az indítást. Oldja fel, majd indítsa újra:

sudo systemctl reset-failed mssql-server
sudo systemctl start mssql-server

Mi miért nem indul? A szolgáltatás naplója a journalctl -u mssql-server, az SQL Server saját naplója a /var/opt/mssql/log/errorlog (ezt csak root és az mssql felhasználó olvashatja). Dockerben mindkettő a docker logs sql1 parancs kimenetében látszik.

Az Express nem enged dedikált rendszergazdai kapcsolatot (DAC). Az Express kiadásban ez alapból ki van kapcsolva; a napló szerint a 7806-os nyomkövetési jelzővel kapcsolható be.

Melyik csomagot válassza?

Az SQL Server Express Linuxon egy legalább 4 GB memóriájú KVM VPS-en fut kényelmesen (AMD VPS 4: 2 vCPU, 4 GB). Ha az Express mind a 4 processzormagját ki szeretné használni, vagy az adatbázis mellett egy webalkalmazás is fut a gépen, az AMD VPS 8 (4 vCPU, 8 GB) a jobb választás. Windows-függő alkalmazáshoz licencelt Windows Serverrel érkező Windows VPS csomagjaink valók. Ha nem biztos benne, melyik illik az alkalmazásához, írjon nekünk, segítünk dönteni.

Vissza: Linux leírások (63)