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_ACCESSvagyUNSAFEjogosultsággal: aSAFEszerelvé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
sqlcmdhaszná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 updatevagy 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.