Sdílet prostřednictvím


Řešení potíží s SQL Serverem v Linuxu

platí pro:SQL Server – Linux

Tento článek popisuje, jak řešit potíže s SQL Serverem běžícím v Linuxu nebo v kontejneru Linuxu. Při řešení potíží s SQL Serverem v Linuxu nezapomeňte zkontrolovat podporované funkce a známá omezení:

Odpovědi na nejčastější dotazy najdete v Nejčastější dotazy k SQL Serveru na Linuxu.

Řešení potíží se selháními připojení

Pokud máte potíže s připojením k instanci SQL Serveru s Linuxem, můžete zkontrolovat několik věcí.

  • Pokud se nemůžete připojit místně pomocí localhost, zkuste místo toho použít IP adresu 127.0.0.1. Je možné, že localhost není správně přiřazeno k této adrese.

  • Ověřte, že je název serveru nebo IP adresa dostupné z klientského počítače.

    Pokud chcete najít IP adresu počítače s Ubuntu, můžete příkaz spustit ifconfig jako v následujícím příkladu:

    sudo ifconfig eth0 | grep 'inet addr'
    

    Pro Red Hat můžete použít ip addr příkaz jako v následujícím příkladu:

    sudo ip addr show eth0 | grep "inet"
    

    Návod

    Jedna výjimka z této techniky souvisí s virtuálními počítači Azure. Pro virtuální počítače Azure vyhledejte veřejnou IP adresu virtuálního počítače na webu Azure Portal.

  • Pokud je to možné, zkontrolujte, že jste v bráně firewall otevřeli port SQL Serveru (výchozí 1433).

  • U virtuálních počítačů Azure zkontrolujte, jestli máte pravidlo skupiny zabezpečení sítě pro výchozí port SQL Serveru.

  • Ověřte, že uživatelské jméno a heslo neobsahují překlepy, nadbytečné mezery nebo nesprávné použití velkých/malých písmen.

  • Zkuste explicitně nastavit protokol a číslo portu s názvem serveru jako v následujícím příkladu: tcp:servername,1433.

  • Problémy s připojením k síti můžou také způsobit chyby připojení a vypršení časových limitů. Po ověření informací o připojení a připojení k síti zkuste připojení zopakovat.

Správa služby SQL Serveru

Následující část ukazuje, jak spravovat spouštění kontejnerů SQL Serveru Linux. Informace o správě služeb pro Linux najdete v tématu Spuštění, zastavení a restartování služeb SQL Serveru v Linuxu.

Správa spouštění kontejneru SQL Serveru s Linuxem

Stav a ID kontejneru nejnovějšího vytvořeného kontejneru SQL Serveru s Linuxem můžete získat spuštěním následujícího příkazu (ID je pod sloupcem CONTAINER ID ):

sudo docker ps -l

Službu SQL Serveru můžete podle potřeby zastavit nebo restartovat pomocí následujících příkazů:

sudo docker stop <container ID>
sudo docker restart <container ID>

Návod

Další tipy pro řešení potíží pro kontejnery Linuxu najdete v tématu Řešení potíží s kontejnery Dockeru SQL Serveru.

Přístup k souborům protokolu

Databázový engine SQL Serveru protokoluje do souboru /var/opt/mssql/log/errorlog v instalacích na Linuxu a v kontejnerech. Abyste mohli tento adresář procházet, musíte být v režimu superuživatele .

Instalační program zapisuje logy sem: /var/opt/mssql/setup-<time stamp representing time of install> Soubory můžete procházet pomocí libovolného nástroje kompatibilního s UTF-16, jako je errorlog nebo cat, například takto:

sudo cat errorlog

Pokud chcete, můžete také převést soubory na UTF-8 a přečíst je více nebo méně pomocí následujícího příkazu:

sudo iconv -f UTF-16LE -t UTF-8 <errorlog> -o <output errorlog file>

Rozšířené události

Rozšířené události je možné dotazovat pomocí příkazu SQL. Další informace najdete v rozšířených událostech.

Soubory se záznamem o selhání

Vyhledejte výpisy v adresáři logů v Linuxu. Zkontrolujte v adresáři /var/opt/mssql/log výpisy jádra Linuxu (.tar.gz2 přípona) nebo minivýpisy SQL (.mdmp přípona).

Pokud například chcete zobrazit základní výpisy paměti:

sudo ls /var/opt/mssql/log | grep .tar.gz2

Pro výpisy paměti SQL použijte tento skript:

sudo ls /var/opt/mssql/log | grep .mdmp

Spuštění SQL Serveru v minimální konfiguraci nebo v režimu jednoho uživatele

Spuštění SQL Serveru v minimálním režimu konfigurace

Tento režim je užitečný, pokud nastavení konfigurační hodnoty (například přetěžování paměti) zabrání spuštění serveru.

sudo -u mssql /opt/mssql/bin/sqlservr -f

Spuštění SQL Serveru v režimu jednoho uživatele

Někdy může být nutné spustit instanci SQL Serveru v režimu jednoho uživatele pomocí možnosti spuštění -m. Další informace najdete v tématu spouštěcí parametry. Můžete například chtít změnit možnosti konfigurace serveru nebo obnovit poškozenou databázi master nebo jinou systémovou databázi.

Například pomocí následujícího skriptu spusťte SQL Server v režimu jednoho uživatele:

sudo -u mssql /opt/mssql/bin/sqlservr -m

Tento skript spustí SQL Server v režimu jednoho uživatele pomocí sqlcmd:

sudo -u mssql /opt/mssql/bin/sqlservr -m sqlcmd

Sql Server byste měli vždy spustit v Linuxu mssql s uživatelem, abyste zabránili budoucím problémům se spuštěním. Příklad: sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]

Pokud omylem spustíte SQL Server s jiným uživatelem, musíte předtím, než SQL Server spustíte pomocí mssql, změnit vlastnictví databázových souborů SQL Serveru zpět na uživatele . Pokud například chcete změnit vlastnictví všech databázových souborů pod /var/opt/mssql uživatelem mssql , spusťte následující příkaz:

chown -R mssql:mssql /var/opt/mssql/

Opětovné sestavení systémových databází

Jako poslední možnost se můžete rozhodnout znovu sestavit databáze master a model na výchozí verze.

Výstraha

Tento proces je nebezpečný, protože můžete odstranit všechna systémová data SYSTÉMU SQL Server , která jste nakonfigurovali, včetně informací o uživatelských databázích (ale ne samotných uživatelských databází).

Potom je potřeba připojit uživatelské databáze k instanci. Odstraní také další informace uložené v systémových databázích, včetně:

  • Informace o hlavním klíči databáze (DMK)
  • všechny certifikáty načtené do master
  • heslo pro sa účet
  • informace o zaměstnání z msdb
  • Informace o databázové poště z msdb
  • sp_configure možnosti

Nemůžete znovu připojit žádné uživatelské databáze zašifrované transparentním šifrováním dat (TDE), pokud nejsou zálohovány také vaše certifikáty a privátní klíče.

Tyto kroky použijte pouze v případě, že pochopíte důsledky.

  1. Zastavení databázového stroje SQL Serveru

    sudo systemctl stop mssql-server
    
  2. Spuštění sqlservru s parametrem force-setup

    sudo -u mssql /opt/mssql/bin/sqlservr --force-setup
    

    Sql Server byste měli vždy spustit v Linuxu mssql s uživatelem, abyste zabránili budoucím problémům se spuštěním.

  3. Jakmile se zobrazí zpráva "Obnovení je dokončeno", stiskněte Ctrl+C. Tím se vypne SQL Server.

  4. Překonfigurujte sa heslo.

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    

    Upozornění

    Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.

  5. Spusťte SQL Server a znovu nakonfigurujte server, včetně obnovení nebo opětovného připojení všech uživatelských databází.

    sudo systemctl start mssql-server
    

Zvýšení výkonu

Mnoho faktorů ovlivňuje výkon, včetně návrhu databáze, hardwaru a požadavků na úlohy. Pokud chcete zlepšit výkon, začněte tím, že si projděte osvědčené postupy v článku, osvědčené postupy výkonu a pokyny pro konfiguraci SQL Serveru v Linuxu. Pak prozkoumejte některé z dostupných nástrojů pro řešení potíží s výkonem.

Běžné problémy

  1. Ke vzdálené instanci SQL Serveru se nemůžete připojit.

    Projděte si část věnovanou řešení potíží v článku Připojení k SQL Serveru v Linuxu.

  2. Zobrazí se chybová zpráva: ERROR: Hostname must be 15 characters or less.

    Jedná se o známý problém, ke kterému dochází vždy, když název počítače, který se pokouší nainstalovat balíček SQL Serveru, je delší než 15 znaků. V současné době neexistují žádná alternativní řešení než změna názvu počítače. Můžete to provést úpravou /etc/hostname i /etc/hosts, změnou názvu hostitele, uložením každého souboru a restartováním počítače.

  3. Heslo správcesa systému () musí být resetovat, což dočasně zastaví službu SQL Serveru.

    Pokud heslo zapomenete sa nebo ho potřebujete resetovat z nějakého jiného důvodu, postupujte takto.

    Přihlaste se k hostitelskému terminálu, spusťte následující příkazy a podle pokynů resetujte sa heslo:

    sudo systemctl stop mssql-server
    sudo /opt/mssql/bin/mssql-conf setup
    

    Upozornění

    Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.

  4. Speciální znaky v heslech můžou způsobit chyby nebo selhání přihlášení.

    Pokud v hesle SQL Serveru použijete nějaké znaky, budete je muset při použití na příkazovém řádku Linuxu utéct zpětným lomítkem. Například musíte escapeovat znak dolaru ($), kdykoli ho použijete v příkazu terminálu nebo skriptu.

    • Nefunguje:

      sudo sqlcmd -S myserver -U sa -P Test$$
      
    • Funguje to.

      sqlcmd -S myserver -U sa -P Test\$\$
      

Získejte pomoc

Přispějte k dokumentaci SQL

Věděli jste, že obsah SQL můžete upravovat sami? Pokud to uděláte, nejen že vám pomůžete vylepšit naši dokumentaci, ale také jste získali kredit jako přispěvatel na stránku.

Další informace naleznete v Upravit dokumentaci Microsoft Learn.