Problembehandlung bei SQL Server unter Linux

Gilt für: SQL Server – Linux

In diesem Artikel wird beschrieben, wie Sie Probleme bei SQL Server unter Linux oder in einem Linux-Container behandeln. Berücksichtigen Sie bei der Problembehebung bei SQL Server unter Linux die Informationen zu den unterstützten Features und bekannten Einschränkungen:

Antworten auf häufig gestellte Fragen finden Sie unter Häufig gestellte Fragen zu SQL Server für Linux.

Durchführen der Problembehandlung für Verbindungsfehler

Wenn Probleme beim Herstellen einer Verbindung mit Ihrer SQL Server-Instanz unter Linux auftreten, müssen Sie einige Dinge überprüfen.

  • Wenn es nicht möglich ist, mithilfe von localhost eine Verbindung lokal herzustellen, probieren Sie es mit der IP-Adresse 127.0.0.1. Es ist möglich, dass localhost dieser Adresse nicht ordnungsgemäß zugeordnet ist.

  • Überprüfen Sie, ob der Servername oder die IP-Adresse über den Clientcomputer erreichbar ist.

    Um die IP-Adresse Ihres Ubuntu-Computers zu ermitteln, können Sie den Befehl ifconfig wie im folgenden Beispiel ausführen:

    sudo ifconfig eth0 | grep 'inet addr'
    

    Für Red Hat können Sie den ip addr-Befehl wie im folgenden Beispiel verwenden:

    sudo ip addr show eth0 | grep "inet"
    

    Tipp

    Eine Ausnahme von dieser Methode stellen Azure-VMs dar. Die öffentliche IP-Adresse für Azure-VMs finden Sie im Azure-Portal.

  • Überprüfen Sie gegebenenfalls, ob Sie den SQL Server-Port (standardmäßig Port 1433) in der Firewall geöffnet haben.

  • Überprüfen Sie bei Verwendung von Azure-VMs, ob für den SQL Server-Standardport eine Netzwerksicherheitsgruppen-Regel festgelegt ist.

  • Vergewissern Sie sich, dass der Benutzername und das Kennwort keine Tippfehler oder zusätzliche Leerzeichen enthalten bzw. falsch geschrieben wurden.

  • Versuchen Sie, das Protokoll und die Portnummer explizit mit dem Servernamen wie im folgenden Beispiel festzulegen: tcp:servername,1433.

  • Probleme bei der Netzwerkverbindung können auch Verbindungsfehler und Timeouts verursachen. Nachdem Sie die Verbindungsinformationen und die Netzwerkkonnektivität überprüft haben, versuchen Sie erneut, die Verbindung herzustellen.

Verwalten des SQL Server-Diensts

Im folgenden Abschnitt wird gezeigt, wie Sie die Ausführung von SQL Server-Linux-Containern verwalten. Informationen zum Verwalten von Diensten für Linux finden Sie unter Starten, Beenden und Neustarten von SQL Server-Diensten unter Linux.

Verwalten der Ausführung des SQL Server-Linux-Containers

Sie können den Status und die Container-ID des zuletzt erstellten SQL Server Linux-Containers durch Ausführen des folgenden Befehls abrufen (die ID befindet sich in der Spalte CONTAINER ID):

sudo docker ps -l

Sie können den SQL Server-Dienst nach Bedarf mit den folgenden Befehlen beenden oder neu starten:

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

Tipp

Weitere Tipps zur Problembehandlung für Linux-Container finden Sie unter Troubleshoot SQL Server Docker containers (Problembehandlung bei SQL Server in Docker-Containern).

Zugreifen auf die Protokolldateien

Die SQL Server-Datenbank-Engine zeichnet Protokolle sowohl bei Linux- als auch bei Containerinstallationen in der Datei /var/opt/mssql/log/errorlog auf. Sie müssen sich im Modus Superuser befinden, um dieses Verzeichnis durchsuchen zu können.

Das Installationsprogramm protokolliert hier: /var/opt/mssql/setup-<time stamp representing time of install> Sie können die errorlog-Dateien mit einem beliebigen UTF-16-kompatiblen Tool wie vim oder cat wie folgt durchsuchen:

sudo cat errorlog

Wenn Sie möchten, können Sie die Dateien auch in UTF-8 konvertieren, um sie mit more oder less mit dem folgenden Befehl zu lesen:

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

Erweiterte Ereignisse

Erweiterte Ereignisse können über einen SQL-Befehl abgefragt werden. Weitere Informationen finden Sie unter Übersicht über erweiterte Ereignisse.

Absturzabbilder

Suchen Sie im Protokollverzeichnis unter Linux nach Abbildern. Überprüfen Sie das Verzeichnis /var/opt/mssql/log auf Linux-Kernspeicherabbilder (.tar.gz2-Erweiterung) oder SQL-Minidumps (.mdmp-Erweiterung).

So zeigen Sie z. B. Kernspeicherabbilder an:

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

Verwenden Sie dieses Skript für SQL-Speicherabbilder:

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

Starten von SQL Server im Minimalkonfigurationsmodus oder Einzelbenutzermodus

Starten von SQL Server im Minimalkonfiguration

Dieser Modus ist hilfreich, wenn der Server aufgrund der Einstellung eines Konfigurationswerts (z. B. aufgrund von Arbeitsspeichermangel) nicht gestartet werden kann.

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

Starten von SQL Server im Einzelbenutzermodus

Unter bestimmten Umständen müssen Sie möglicherweise eine Instanz von SQL Server mithilfe der Startoption -m im Einzelbenutzermodus starten. Weitere Informationen finden Sie unter Sonstige Startoptionen. Dies ist z. B. der Fall, wenn Sie Serverkonfigurationsoptionen ändern oder eine beschädigte master-Datenbank oder andere Systemdatenbanken wiederherstellen möchten.

Verwenden Sie beispielsweise das folgende Skript, um SQL Server im Einzelbenutzermodus zu starten:

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

Dieses Skript startet SQL Server im Einzelbenutzermodus mit sqlcmd:

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

Starten Sie SQL Server für Linux immer mit dem Benutzer mssql, um zukünftige Startprobleme zu vermeiden. Beispiel: sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]

Wenn Sie SQL Server versehentlich mit einer anderen Benutzerin oder einem anderen Benutzer starten, müssen Sie die Besitzer*in bzw. den Besitzer der SQL Server-Datenbankdateien wieder in den Benutzer mssql ändern, bevor Sie SQL Server mit systemd starten. Wenn Sie z. B. den Besitzer aller Datenbankdateien unter /var/opt/mssql in den Benutzer mssql ändern möchten, führen Sie den folgenden Befehl aus:

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

Neuerstellen von Systemdatenbanken

Als letztes Mittel können Sie die master- und model-Datenbanken wieder auf die Standardversionen zurücksetzen.

Warnung

Dieser Prozess ist gefährlich, da Sie alle SQL Server-Systemdaten löschen können, die Sie konfiguriert haben, einschließlich Informationen zu Ihren Benutzerdatenbanken (aber nicht die Benutzerdatenbanken selbst).

Anschließend müssen Sie die Benutzerdatenbanken der Instanz anfügen. Es werden auch andere Informationen gelöscht, die in den Systemdatenbanken gespeichert sind, z. B.:

  • Informationen zum Datenbank-Hauptschlüssel
  • alle in master geladenen Zertifikate
  • Das Kennwort für die SA-Anmeldung.
  • auftragsbezogene Informationen von msdb
  • Datenbank-E-Mail-Informationen von msdb
  • sp_configure-Optionen

Mit Transparent Data Encryption (TDE) verschlüsselte Benutzerdatenbanken können nur dann erneut angefügt werden, wenn Ihre Zertifikate und privaten Schlüssel ebenfalls gesichert werden.

Verwenden Sie diese Schritte nur, wenn Sie sich über die Konsequenzen im Klaren sind!

  1. Beenden Sie die SQL Server-Datenbank-Engine.

    sudo systemctl stop mssql-server
    
  2. Führen Sie sqlservr mit dem Parameter force-setup aus.

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

    Starten Sie SQL Server für Linux immer mit dem Benutzer mssql, um zukünftige Startprobleme zu vermeiden.

  3. Wenn die Meldung „Wiederherstellung ist abgeschlossen“ angezeigt wird, drücken Sie STRG+C. SQL Server wird daraufhin beendet.

  4. Konfigurieren Sie das Systemadministratorkennwort neu.

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    
  5. Starten Sie SQL Server, und konfigurieren Sie den Server neu, einschließlich des Wiederherstellens oder erneuten Anfügens von Benutzerdatenbanken.

    sudo systemctl start mssql-server
    

Verbessern der Leistung

Zahlreiche Faktoren inklusive Datenbankentwurf, Hardware und Workloadanforderungen wirken sich auf die Leistung aus. Wenn Sie die Leistung verbessern möchten, lesen Sie zunächst die bewährten Methoden im Artikel Bewährte Methoden für die Leistung und Konfigurationsrichtlinien für SQL Server für Linux. Erkunden Sie dann einige der verfügbaren Tools zur Behandlung von Leistungsproblemen.

Häufige Probleme

  1. Sie können keine Verbindung mit der SQL Server-Remoteinstanz herstellen.

    Weitere Informationen finden Sie im Abschnitt zur Fehlerbehebung im Artikel Connect to SQL Server on Linux (Herstellen einer Verbindung mit SQL Server).

  2. Die folgende Fehlermeldung wird angezeigt: ERROR: Hostname must be 15 characters or less.

    Dies ist ein bekanntes Problem, das auftritt, wenn der Name des Computers, auf dem das SQL Server-Paket installiert werden soll, länger als 15 Zeichen ist. Diese Problem kann zurzeit nur durch Ändern des Computernamens umgangen werden. Sie können dazu /etc/hostname und /etc/hosts bearbeiten, den Hostnamen ändern, jede Datei speichern und den Computer neu starten.

  3. Das Kennwort für die Systemverwaltung (System Administration, SA) muss zurückgesetzt werden, wodurch der SQL Server-Dienst vorübergehend unterbrochen wird.

    Wenn Sie das Kennwort des Systemadministrators vergessen haben oder aus einem anderen Grund zurücksetzen müssen, führen Sie die folgenden Schritte aus.

    Melden Sie sich beim Hostterminal an, führen Sie die folgenden Befehle aus, und befolgen Sie die Anweisungen zum Zurücksetzen des Systemadministratorkennworts:

    sudo systemctl stop mssql-server
    sudo /opt/mssql/bin/mssql-conf setup
    
  4. Sonderzeichen in Anmeldekennwörtern verursachen Anmeldefehler oder sonstige Fehler.

    Manche Zeichen müssen bei Verwendung im Anmeldekennwort für SQL Server möglicherweise mit einem Escapezeichen in Form eines umgekehrten Schrägstrichs versehen werden, wenn Sie sie in der Linux-Befehlszeile verwenden. Beispielsweise müssen Sie das Dollarzeichen ($) jedes Mal mit Escapezeichen versehen, wenn Sie es in einem Terminalbefehl/Shellskript verwenden:

    Funktioniert nicht:

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

    Funktioniert:

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

Hilfe erhalten

Zur SQL-Dokumentation beitragen

Wussten Sie schon, dass Sie SQL-Inhalte selbst bearbeiten könnten? Hierdurch helfen Sie nicht nur mit, unsere Dokumentation zu verbessern, sondern Sie werden auch als Mitwirkender an der Seite aufgeführt.

Weitere Informationen finden Sie unter Mitwirken an der SQL Server-Dokumentation.