Dela via


Felsöka SQL Server i Linux

Gäller för:SQL Server – Linux

I den här artikeln beskrivs hur du felsöker SQL Server som körs på Linux eller i en Linux-container. När du felsöker SQL Server på Linux bör du komma ihåg att granska de funktioner som stöds och kända begränsningar:

Svar på vanliga frågor och svar finns i vanliga frågor och svar om SQL Server på Linux.

Felsök anslutningsfel

Om du har problem med att ansluta till din Linux SQL Server-instans finns det några saker att kontrollera.

  • Om du inte kan ansluta lokalt med localhost, kan du prova att använda IP-adressen 127.0.0.1 i stället. Det är möjligt att localhost inte är korrekt mappat till den här adressen.

  • Kontrollera att servernamnet eller IP-adressen kan nås från klientdatorn.

    Om du vill hitta IP-adressen för din Ubuntu-dator kan du köra ifconfig kommandot som i följande exempel:

    sudo ifconfig eth0 | grep 'inet addr'
    

    För Red Hat kan du använda ip addr kommandot som i följande exempel:

    sudo ip addr show eth0 | grep "inet"
    

    Tips/Råd

    Ett undantag till den här tekniken gäller virtuella Azure-datorer. För virtuella Azure-datorer hittar du den offentliga IP-adressen för den virtuella datorn i Azure-portalen.

  • Om tillämpligt kontrollerar du att du har öppnat SQL Server-porten (standard 1433) i brandväggen.

  • För virtuella Azure-datorer kontrollerar du att du har en regel för nätverkssäkerhetsgrupp för SQL Server-standardporten.

  • Kontrollera att användarnamnet och lösenordet inte innehåller några skrivfel, extra blanksteg eller felaktig bokstavsstorlek.

  • Försök att uttryckligen ange protokollet och portnumret med servernamnet som i följande exempel: tcp:servername,1433.

  • Problem med nätverksanslutningen kan också orsaka anslutningsfel och timeout. När du har verifierat anslutningsinformationen och nätverksanslutningen kan du prova anslutningen igen.

Hantera SQL Server-tjänsten

Följande avsnitt visar hur du hanterar körningen av SQL Server Linux-containrar. Information om hur du hanterar tjänster för Linux finns i Starta, stoppa och starta om SQL Server-tjänster i Linux.

Hantera körningen av SQL Server Linux-containern

Du kan hämta status och container-ID för den senast skapade SQL Server Linux-containern genom att köra följande kommando (ID:t finns under CONTAINER ID kolumnen):

sudo docker ps -l

Du kan stoppa eller starta om SQL Server-tjänsten efter behov med hjälp av följande kommandon:

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

Tips/Råd

Fler felsökningstips för Linux-containrar finns i Felsöka SQL Server Docker-containrar.

Komma åt loggfilerna

SQL Server Database Engine loggar till /var/opt/mssql/log/errorlog filen i både Linux- och containerinstallationerna. Du måste vara i superanvändarläge för att kunna bläddra i den här katalogen.

Installationsloggarna här: /var/opt/mssql/setup-<time stamp representing time of install> Du kan bläddra bland errorlog filerna med valfritt UTF-16-kompatibelt verktyg som vim eller cat så här:

sudo cat errorlog

Om du vill kan du också konvertera filerna till UTF-8 för att läsa dem med mer eller mindre med följande kommando:

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

Utökade händelser

Utökade händelser kan frågas via ett SQL-kommando. Mer information finns i utökade händelser.

Kraschdumpar

Leta efter dumpar i loggkatalogen i Linux. Kontrollera under /var/opt/mssql/log katalogen för Linux Core-dumpar (.tar.gz2 tillägg) eller SQL-minidumpar (.mdmp tillägg).

Om du till exempel vill visa kärndumpar:

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

För SQL-dumpar använder du det här skriptet:

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

Starta SQL Server i minimal konfiguration eller i enanvändarläge

Starta SQL Server i minimalt konfigurationsläge

Det här läget är användbart om inställningen för ett konfigurationsvärde (till exempel överbekräkning av minne) hindrar servern från att starta.

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

Starta SQL Server i enanvändarläge

Ibland kan du behöva starta en instans av SQL Server i enanvändarläge med startalternativet -m. Mer information finns i startparametrar. Du kanske till exempel vill ändra serverkonfigurationsalternativ eller återställa en skadad master databas eller annan systemdatabas.

Använd till exempel följande skript för att starta SQL Server i enanvändarläge:

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

Det här skriptet startar SQL Server i enanvändarläge med sqlcmd:

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

Du bör alltid starta SQL Server på Linux med mssql användaren för att förhindra framtida startproblem. Till exempel: sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]

Om du av misstag startar SQL Server med en annan användare måste du ändra ägarskapet för SQL Server-databasfilerna tillbaka till mssql användaren innan du startar SQL Server med systemd. Om du till exempel vill ändra ägarskapet för alla databasfiler under /var/opt/mssql till mssql användaren kör du följande kommando:

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

Återskapa systemdatabaser

Som en sista utväg kan du välja att återskapa master och model databaserna tillbaka till standardversionerna.

Varning

Den här processen är farlig eftersom du kan ta bort alla SQL Server-systemdata som du har konfigurerat, inklusive information om dina användardatabaser (men inte själva användardatabaserna).

Du måste koppla användardatabaserna till instansen efteråt. Den tar också bort annan information som lagras i systemdatabaserna, inklusive:

  • information om databashuvudnyckel (DMK)
  • alla certifikat som läses in master
  • lösenordet för sa kontot
  • jobbrelaterad information från msdb
  • Databasemailinformation från msdb
  • sp_configure Alternativ

Du kan inte återansluta några användardatabaser som krypterats med transparent datakryptering (TDE) såvida inte även dina certifikat och privata nycklar säkerhetskopieras.

Använd endast de här stegen om du förstår konsekvenserna.

  1. Stäng SQL Server Database Engine

    sudo systemctl stop mssql-server
    
  2. Kör sqlservr med parametern force-setup

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

    Du bör alltid starta SQL Server på Linux med mssql användaren för att förhindra framtida startproblem.

  3. När du ser meddelandet "Återställningen är klar" trycker du på Ctrl+C. Detta stänger av SQL Server.

  4. Konfigurera om sa lösenordet.

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

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

  5. Starta SQL Server och konfigurera om servern, inklusive återställning eller återanslutning av användardatabaser.

    sudo systemctl start mssql-server
    

Förbättra prestanda

Många faktorer påverkar prestanda, inklusive krav på databasdesign, maskinvara och arbetsbelastning. Om du vill förbättra prestandan kan du börja med att läsa metodtipsen i artikeln Prestandatips och konfigurationsriktlinjer för SQL Server i Linux. Utforska sedan några av de tillgängliga verktygen för felsökning av prestandaproblem.

Vanliga problem

  1. Du kan inte ansluta till din fjärranslutna SQL Server-instans.

    Se felsökningsavsnittet i artikeln Anslut till SQL Server på Linux.

  2. Felmeddelandet visas: ERROR: Hostname must be 15 characters or less.

    Det här är ett känt problem som inträffar när namnet på datorn som försöker installera SQL Server-paketet är längre än 15 tecken. Det finns för närvarande inga andra lösningar än att ändra namnet på datorn. Du kan göra detta genom att redigera både /etc/hostname och /etc/hosts, ändra värdnamnet, spara varje fil och starta om datorn.

  3. Systemadministratörslösenordet (sa) måste återställas, vilket tillfälligt stoppar SQL Server-tjänsten.

    Om du glömmer sa lösenordet eller behöver återställa det av någon annan anledning följer du dessa steg.

    Logga in på värdterminalen, kör följande kommandon och följ anvisningarna för att återställa sa lösenordet:

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

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

  4. Specialtecken i lösenord kan orsaka fel eller inloggningsfel.

    Om du använder vissa tecken i SQL Server-lösenordet kan du behöva undvika dem med ett omvänt snedstreck när du använder dem på Linux-kommandoraden. Du måste till exempel undvika dollartecknet ($) när du använder det i ett terminalkommando/shell-skript:

    • Fungerar inte:

      sudo sqlcmd -S myserver -U sa -P Test$$
      
    • Fungerar det?

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

Få hjälp

Bidra till SQL-dokumentation

Visste du att du kan redigera SQL-innehåll själv? Om du gör det hjälper du inte bara till att förbättra vår dokumentation, utan du får även kredit som deltagare på sidan.

Mer information finns i Redigera Microsoft Learn-dokumentation.