Delen via


Problemen met SQL Server op Linux oplossen

Van toepassing op:SQL Server - Linux

In dit artikel wordt beschreven hoe u problemen met SQL Server kunt oplossen die worden uitgevoerd op Linux of in een Linux-container. Wanneer u problemen met SQL Server op Linux oplost, moet u eraan denken om de ondersteunde functies en bekende beperkingen te bekijken:

Zie de SQL Server op Linux FAQvoor antwoorden op veelgestelde vragen.

Verbindingsfouten oplossen

Als u problemen ondervindt bij het verbinden met uw Linux SQL Server-exemplaar, zijn er een paar dingen die u moet controleren.

  • Als u geen lokale verbinding kunt maken met localhost, probeer dan het IP-adres 127.0.0.1 te gebruiken. Het is mogelijk dat dit localhost niet goed is toegewezen aan dit adres.

  • Controleer of de servernaam of het IP-adres bereikbaar is vanaf uw clientcomputer.

    Als u het IP-adres van uw Ubuntu-computer wilt vinden, kunt u de ifconfig opdracht uitvoeren zoals in het volgende voorbeeld:

    sudo ifconfig eth0 | grep 'inet addr'
    

    Voor Red Hat kunt u de ip addr opdracht gebruiken zoals in het volgende voorbeeld:

    sudo ip addr show eth0 | grep "inet"
    

    Aanbeveling

    Een uitzondering op deze techniek heeft betrekking op Azure-VM's. Voor Azure-VM's zoekt u het openbare IP-adres voor de VM in de Azure Portal.

  • Controleer indien van toepassing of u de SQL Server-poort (standaard 1433) op de firewall hebt geopend.

  • Controleer voor Azure-VM's of u een netwerkbeveiligingsgroepsregel hebt voor de standaardpoort van SQL Server.

  • Controleer of de gebruikersnaam en het wachtwoord geen typefouten, extra spaties of onjuiste hoofdletters bevatten.

  • Probeer het protocol en poortnummer expliciet in te stellen met de servernaam, zoals in het volgende voorbeeld: tcp:servername,1433.

  • Problemen met de netwerkverbinding kunnen ook verbindingsfouten en time-outs veroorzaken. Nadat u uw verbindingsgegevens en netwerkverbinding hebt gecontroleerd, probeert u de verbinding opnieuw.

De SQL Server-service beheren

In de volgende sectie ziet u hoe u de uitvoering van SQL Server Linux-containers beheert. Zie SQL Server-services starten, stoppen en opnieuw opstarten op Linux voor het beheren van services voor Linux.

De uitvoering van de SQL Server Linux-container beheren

U kunt de status en container-id van de laatst gemaakte SQL Server Linux-container ophalen door de volgende opdracht uit te voeren (de id staat onder de CONTAINER ID kolom):

sudo docker ps -l

U kunt de SQL Server-service naar behoefte stoppen of opnieuw opstarten met behulp van de volgende opdrachten:

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

Aanbeveling

Zie Problemen met SQL Server Docker-containers oplossen voor meer tips voor het oplossen van problemen met Linux-containers.

Toegang tot de logbestanden

De SQL Server Database Engine registreert logboeken bij het /var/opt/mssql/log/errorlog bestand in zowel de Linux- als de containerinstallaties. U moet in de superuser-modus zijn om door deze map te bladeren.

Het installatieprogramma logt hier in: /var/opt/mssql/setup-<time stamp representing time of install> U kunt door de errorlog bestanden bladeren met elke UTF-16-compatibele tool zoals vim of cat als volgt:

sudo cat errorlog

Als u wilt, kunt u de bestanden ook converteren naar UTF-8 om ze min ofmeer te lezen met het volgende commando:

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

Uitgebreide gebeurtenissen

Uitgebreide gebeurtenissen kunnen worden opgevraagd via een SQL-opdracht. Zie uitgebreide evenementen voor meer informatie.

Crashrapporten

Zoek naar dumps in de logmap in Linux. Controleer onder de /var/opt/mssql/log directory op Linux Core-dumps (.tar.gz2 extensie) of SQL-minidumps (.mdmp extensie).

Ga bijvoorbeeld als volgt te werk om kerndumps weer te geven:

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

Gebruik dit script voor SQL-dumps:

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

Start SQL Server in minimale configuratie of in modus voor één gebruiker

Start SQL Server in minimale configuratiemodus

Deze modus is handig als de instelling van een configuratiewaarde (bijvoorbeeld het overbelasten van geheugen) voorkomt dat de server wordt opgestart.

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

SQL Server starten in de modus voor één gebruiker

Soms moet u een exemplaar van SQL Server starten in de modus voor één gebruiker met behulp van de opstartoptie -m. Zie opstartparameters voor meer informatie. U kunt bijvoorbeeld serverconfiguratieopties wijzigen of een beschadigde master-database of een andere systeemdatabase herstellen.

Gebruik bijvoorbeeld het volgende script om SQL Server te starten in de modus voor één gebruiker:

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

Met dit script wordt SQL Server gestart in de modus voor één gebruiker met sqlcmd:

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

U moet SQL Server altijd op Linux starten met de mssql gebruiker om toekomstige opstartproblemen te voorkomen. Bijvoorbeeld: sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]

Als u per ongeluk SQL Server start met een andere gebruiker, moet u het eigendom van SQL Server-databasebestanden terugzetten naar de mssql gebruiker voordat u SQL Server start met systemd. Als u bijvoorbeeld het eigendom van alle databasebestanden wilt wijzigen onder /var/opt/mssql naar de gebruiker, voert u mssql de volgende opdracht uit:

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

Systeemdatabases herbouwen

Als laatste redmiddel kunt u ervoor kiezen om de en databases terug te bouwen naar de mastermodel standaardversies.

Waarschuwing

Dit proces is gevaarlijk, omdat u alle SQL Server-systeemgegevens die u hebt geconfigureerd, kunt verwijderen, inclusief informatie over uw gebruikersdatabases (maar niet de gebruikersdatabases zelf).

U moet de gebruikersdatabases daarna aan de instantie koppelen. Het verwijdert ook andere informatie die is opgeslagen in de systeemdatabases, waaronder:

  • informatie over de hoofdsleutel van de database (DMK)
  • alle certificaten die zijn geladen in master
  • het wachtwoord voor het sa account
  • werkgerelateerde informatie van msdb
  • Database Mail-informatie van msdb
  • sp_configure Opties

U kunt geen gebruikersdatabases die zijn versleuteld met transparante gegevensversleuteling (TDE) opnieuw koppelen, tenzij er ook een back-up van uw certificaten en privésleutels is gemaakt.

Gebruik deze stappen alleen als u de implicaties begrijpt.

  1. SQL Server Database Engine stoppen

    sudo systemctl stop mssql-server
    
  2. Voer sqlservr uit met de force-setup parameter

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

    U moet SQL Server altijd op Linux starten met de mssql gebruiker om toekomstige opstartproblemen te voorkomen.

  3. Nadat u het bericht "Herstel is voltooid" ziet, drukt u op Ctrl+C. Hierdoor wordt SQL Server afgesloten.

  4. Configureer het sa wachtwoord opnieuw.

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

    Waarschuwing

    Uw wachtwoord moet voldoen aan het standaard SQL Server-wachtwoordbeleid . Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.

  5. Start SQL Server en configureer de server opnieuw, inclusief het herstellen of opnieuw koppelen van gebruikersdatabases.

    sudo systemctl start mssql-server
    

Prestaties verbeteren

Er zijn veel factoren die van invloed zijn op de prestaties, waaronder databaseontwerp, hardware en workloadvereisten. Als u de prestaties wilt verbeteren, begint u met het doornemen van de aanbevolen procedures in het artikel Best practices voor prestaties en configuratierichtlijnen voor SQL Server op Linux. Bekijk vervolgens enkele van de beschikbare hulpprogramma's voor het oplossen van prestatieproblemen.

Veelvoorkomende problemen

  1. U kunt geen verbinding maken met uw externe SQL Server-exemplaar.

    Zie de sectie voor probleemoplossing van het artikel Verbinding maken met SQL Server op Linux.

  2. U krijgt de foutmelding te zien: ERROR: Hostname must be 15 characters or less.

    Dit is een bekend probleem dat optreedt wanneer de naam van de computer die het SQL Server-pakket probeert te installeren, langer is dan 15 tekens. Er zijn momenteel geen andere oplossingen dan het wijzigen van de naam van de machine. U kunt dit doen door zowel als /etc/hostname te /etc/hostsbewerken, de hostnaam te wijzigen, elk bestand op te slaan en de computer opnieuw op te starten.

  3. Het wachtwoord van de systeembeheerder (sa) moet opnieuw worden ingesteld, waardoor de SQL Server-service tijdelijk wordt stopgezet.

    Als u het sa wachtwoord bent vergeten of om een andere reden opnieuw moet instellen, volgt u deze stappen.

    Meld u aan bij de hostterminal, voer de volgende opdrachten uit en volg de aanwijzingen om het sa wachtwoord opnieuw in te stellen:

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

    Waarschuwing

    Uw wachtwoord moet voldoen aan het standaard SQL Server-wachtwoordbeleid . Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.

  4. Speciale tekens in wachtwoorden kunnen fouten of inlogfouten veroorzaken.

    Als u enkele tekens in het SQL Server-wachtwoord gebruikt, moet u deze mogelijk escapen met een backslash wanneer u ze gebruikt op de Linux-opdrachtregel. U moet bijvoorbeeld het dollarteken ($) escapen wanneer u het gebruikt in een terminal-opdracht/shell-script:

    • Werkt:

      sudo sqlcmd -S myserver -U sa -P Test$$
      
    • Werkt wel:

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

Hulp krijgen

Bijdragen aan SQL-documentatie

Wist u dat u zelf SQL-inhoud kunt bewerken? Door dit te doen helpt u niet alleen onze documentatie te verbeteren, maar krijgt u ook erkenning als bijdrager aan de pagina.

Zie Microsoft Learn-documentatie bewerken voor meer informatie.