Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- Viktig information för SQL Server 2022 i Linux
- Viktig information för SQL Server 2019 i Linux
- Viktig information för SQL Server 2017 i Linux
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 attlocalhost
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.
Stäng SQL Server Database Engine
sudo systemctl stop mssql-server
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.När du ser meddelandet "Återställningen är klar" trycker du på Ctrl+C. Detta stänger av SQL Server.
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.
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.
- Övervaka prestanda med hjälp av Query Store
- Vyer för dynamisk hantering av system
- Prestandainstrumentpanel i SQL Server Management Studio
Vanliga problem
Du kan inte ansluta till din fjärranslutna SQL Server-instans.
Se felsökningsavsnittet i artikeln Anslut till SQL Server på Linux.
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.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.
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\$\$
Relaterat innehåll
Få hjälp
- Idéer för SQL: Har du förslag på hur du kan förbättra SQL Server?
- Microsoft Q &A (SQL Server)
- DBA Stack Exchange (tagg sql-server): Ställ frågor till SQL Server
- Stack Overflow (tagg sql-server): Svar på frågor om SQL-utveckling
- Licensvillkor och information för Microsoft SQL Server
- Supportalternativ för företagsanvändare
- Ytterligare hjälp och feedback om SQL Server
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.