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:
- Versionshinweise für SQL Server 2022 unter Linux
- Versionshinweise für SQL Server 2019 für Linux
- Versionshinweise für SQL Server 2017 für Linux
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, dasslocalhost
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!
Beenden Sie die SQL Server-Datenbank-Engine.
sudo systemctl stop mssql-server
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.Wenn die Meldung „Wiederherstellung ist abgeschlossen“ angezeigt wird, drücken Sie STRG+C. SQL Server wird daraufhin beendet.
Konfigurieren Sie das Systemadministratorkennwort neu.
sudo /opt/mssql/bin/mssql-conf set-sa-password
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.
- Überwachen der Leistung mithilfe des Abfragespeichers
- Dynamische Systemverwaltungssichten
- Leistungsdashboard in SQL Server Management Studio
Häufige Probleme
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).
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.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
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\$\$
Zugehöriger Inhalt
Hilfe erhalten
- Ideen für SQL: Haben Sie Vorschläge zur Verbesserung von SQL Server?
- Microsoft Q & A (SQL Server)
- DBA-Stapelaustausch (tag sql-server): Stellen von Fragen zu SQL Server
- Stack Overflow (tag sql-server): Antworten auf SQL-Entwicklungsfragen
- Reddit: allgemeine Erläuterung zu SQL Server
- Lizenzbedingungen und -informationen zu Microsoft SQL Server
- Supportoptionen für Geschäftsbenutzer
- Zusätzliche SQL Server-Hilfe und Feedback
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.