Megosztás a következőn keresztül:


SQL Server Docker-tárolók hibaelhárítása

A következőkre vonatkozik:SQL Server Linux rendszeren

Ez a cikk az SQL Server Docker-tárolók üzembe helyezésekor és használatakor tapasztalt gyakori hibákról szól, és hibaelhárítási technikákat biztosít a probléma megoldásához.

Docker-parancshibák

Ha bármilyen docker parancs esetén hibaüzenetet kap, győződjön meg arról, hogy a docker szolgáltatás fut, és próbáljon meg emelt szintű engedélyekkel futni.

Linuxon például a következő hibaüzenet jelenhet meg a parancsok futtatásakor docker :

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Ha linuxos rendszeren jelenik meg ez a hiba, futtassa ugyanazokat a parancsokat, mint a következővel sudo: . Ha ez nem sikerül, ellenőrizze, hogy fut-e a docker szolgáltatás, és szükség esetén indítsa el.

sudo systemctl status docker
sudo systemctl start docker

Windows rendszeren ellenőrizze, hogy rendszergazdaként indítja-e el a PowerShellt vagy a parancssort.

Fontos

A SA_PASSWORD környezeti változó elavult. A MSSQL_SA_PASSWORD használható helyette.

SQL Server-tároló indítási hibái

Ha az SQL Server-tároló futtatása sikertelen, próbálkozzon a következő tesztekkel:

  • Ha például failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use.hibaüzenetet kap, az 1433-as tárolóportot egy már használatban lévő portra próbálja leképezni. Ez akkor fordulhat elő, ha az SQL Servert helyileg futtatja a gazdaszámítógépen. Ez akkor is megtörténhet, ha két SQL Server konténert indít el, és megpróbálja mindkettőt ugyanarra a rendszerportra leképezni. Ha ez történik, a -p paraméterrel rendelje le az 1433-at egy másik gazdagépportra. Például:

    docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest`.
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest`.
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest`.
    
    docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latest`.
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latest`.
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latest`.
    
    docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latest`.
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latest`.
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latest`.
    
    docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latest`.
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latest`.
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latest`.
    

    Figyelmeztetés

    A jelszónak az SQL Server alapértelmezett jelszóházirendetkell követnie. Alapértelmezés szerint a jelszónak legalább nyolc karakter hosszúnak kell lennie, és a következő négy készletből három karakterből kell állnia: nagybetűk, kisbetűk, 10 számjegyből és szimbólumokból. A jelszavak legfeljebb 128 karakter hosszúak lehetnek. Használjon olyan jelszavakat, amelyek a lehető legkomplexebbek és hosszúak.

  • Ha például Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30tdout=1&tail=all: dial unix /var/run/docker.sock: connect: permission denied egy tároló indításakor hibaüzenetet kap, vegye fel a felhasználót az Ubuntu docker-csoportjába. Ezután jelentkezzen ki és jelentkezzen be újra, mivel ez a változás hatással lesz az új munkamenetekre.

    usermod -aG docker $USER
    
  • Ellenőrizze, hogy vannak-e hibaüzenetek a tárolóból.

    docker logs e69e056c702d
    
  • Győződjön meg arról, hogy megfelel a gyorsútmutató-cikk előfeltételek szakaszában megadott minimális memória- és lemezkövetelményeknek.

  • Ha bármilyen tárolókezelő szoftvert használ, győződjön meg arról, hogy támogatja a gyökérként futó tárolófolyamatokat. A tároló sqlservr-folyamata gyökérként fut.

  • Ha az SQL Server Docker-tároló közvetlenül az indítás után kilép, ellenőrizze a Docker-naplókat. Ha Windows rendszeren használja a PowerShellt a docker run paranccsal, használjon dupla idézőjeleket egyetlen idézőjel helyett. A PowerShell Core-nal egyetlen idézőjelet használhat.

  • Tekintse át az SQL Server beállítási és hibanaplóit.

Memóriakép-rögzítések engedélyezése

Ha az SQL Server folyamat nem működik a tárolóban, hozzon létre egy új tárolót, amelyben a SYS_PTRACE engedélyezett. Ez hozzáad egy Linux alapú képességet egy folyamat nyomon követéséhez, amely egy kivétel esetén dömpájlt létrehozásához szükséges. A dömpfájlt a támogatás használhatja a probléma megoldásához. A következő Docker-futtatási parancs engedélyezi ezt a képességet.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest

Ha az SQL Server 2025 -höz (17.x) vagy egy újabb verzióhoz helyez üzembe tárolót, használja MSSQL_PID=DeveloperStandard a Standard Developer kiadáshoz és MSSQL_PID=Developer az Enterprise Developer kiadáshoz.

Figyelmeztetés

A jelszónak az SQL Server alapértelmezett jelszóházirendetkell követnie. Alapértelmezés szerint a jelszónak legalább nyolc karakter hosszúnak kell lennie, és a következő négy készletből három karakterből kell állnia: nagybetűk, kisbetűk, 10 számjegyből és szimbólumokból. A jelszavak legfeljebb 128 karakter hosszúak lehetnek. Használjon olyan jelszavakat, amelyek a lehető legkomplexebbek és hosszúak.

SQL Server-kapcsolati hibák

Ha nem tud csatlakozni a tárolóban futó SQL Server-példányhoz, próbálkozzon az alábbi tesztekkel:

  • Győződjön meg arról, hogy az SQL Server-tároló fut a kimenet STATUS oszlopának docker ps -a megtekintésével. Ha nem, használja docker start <Container ID> a kezdéshez.

  • Ha nem alapértelmezett gazdagépportra van megfeleltetve (nem 1433), győződjön meg arról, hogy a portot a kapcsolati sztring adja meg. A portleképezés a kimenet PORT oszlopában docker ps -a látható. Az alábbi parancs például az sqlcmd-et az 1401-es porton figyelő tárolóhoz csatlakoztatja:

    sqlcmd -S 10.3.2.4,1401 -U sa -P '<YourPassword>'
    
    sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"
    
    sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"
    
  • Ha meglévő leképezett adatkötettel vagy adatkötet-tárolóval használta docker run , az SQL Server figyelmen kívül hagyja a MSSQL_SA_PASSWORD. Ehelyett az előre konfigurált sa fiókjelszót használja a rendszer az adatkötetben vagy adatkötet-tárolóban lévő SQL Server-adatokból. Ellenőrizze, hogy a sa csatolt adatokhoz társított jelszót használja-e.

  • Tekintse át az SQL Server beállítási és hibanaplóit.

SQL Server rendelkezésre állási csoportok

Ha a Dockert SQL Server rendelkezésre állási csoportokkal használja, két további követelmény is van.

  • A replika-kommunikációhoz használt port leképezése (alapértelmezett 5022). Adja meg -p 5022:5022 például a docker run parancs részeként.

  • Explicit módon állítsa be a tároló gazdagépének nevét a -h YOURHOSTNAMEdocker run parancs paraméterével. A gazdagépnevet akkor használja, amikor a rendelkezésre állási csoportot konfigurálja. Ha nem adja meg -h, alapértelmezés szerint a tárolóazonosító lesz.

SQL Server beállítási és hibanaplók

Az SQL Server beállítási és hibanaplóit a /var/opt/mssql/log fájlban tekintheti meg. Ha a tároló nem fut, először indítsa el a tárolót. Ezután egy interaktív parancssor használatával vizsgálja meg a naplókat. A tárolóazonosítót a parancs docker psfuttatásával szerezheti be.

docker start <ContainerID>
docker exec -it <ContainerID> "bash"

A tárolón belüli bash-munkamenetben futtassa a következő parancsokat:

cd /var/opt/mssql/log
cat setup*.log
cat errorlog

Jótanács

Ha a tároló létrehozásakor egy gazdagépkönyvtárat csatlakoztatott a /var/opt/mssql fájlhoz, ehelyett a gazdagép leképezett elérési útjának napló alkönyvtárában tekintheti meg.

Parancsok végrehajtása tárolóban

Ha rendelkezik futó tárolóval, parancsokat hajthat végre a tárolón belül egy gazdagépterminálról.

A tárolóazonosító futtatásának lekérése:

docker ps -a

Bash-terminál indítása a tároló futtatásában:

docker exec -it <Container ID> /bin/bash

Most úgy futtathat parancsokat, mintha a tárolón belüli terminálon futtatja őket. Ha elkészült, írja be a parancsot exit. Ez az interaktív parancs munkamenetből kilép, de a tároló továbbra is fut.

Közreműködés az SQL dokumentációjában

Tudta, hogy saját maga szerkesztheti az SQL-tartalmakat? Ha így tesz, nem csak a dokumentáció fejlesztésében segít, hanem az oldal közreműködőjeként is jóváírást kap.

További információ: Microsoft Learn-dokumentáció szerkesztése.