SQL Server für Linux: Bekannte Probleme
In den folgenden Abschnitten werden bekannte Probleme mit SQL Server für Linux beschrieben.
Allgemein
In der folgenden Tabelle sind die häufigsten Probleme mit SQL Server für Linux aufgeführt.
Problem | Lösung |
---|---|
Der Name des Hosts, auf dem SQL Server installiert ist, darf maximal 15 Zeichen lang sein. | Ändern Sie den Namen /etc/hostname in einen Wert von 15 Zeichen oder weniger. |
Wenn Sie die Systemzeit manuell auf einen früheren Zeitpunkt festlegen, aktualisiert SQL Server die interne Systemzeit in der Datenbank-Engine nicht mehr. | Starten Sie SQL Server neu. |
Nur Installationen mit einzelner Instanz werden unterstützt. | Wenn Sie mehrere Instanzen auf einem bestimmten Host verwenden möchten, ziehen Sie die Verwendung von virtuelle Computer oder Linux-Containern in Betracht. |
Der SQL Server-Konfigurations-Manager kann keine Verbindung mit SQL Server für Linux herstellen. | Keine. |
Die Standardsprache der sa-Anmeldung ist Englisch. | Ändern Sie die Sprache für die sa-Anmeldung mithilfe der ALTER LOGIN -Anweisung. |
Der OLE DB-Anbieter protokolliert folgende Warnung: Failed to verify the Authenticode signature of 'C:\binn\msoledbsql.dll'. Signature verification of SQL Server DLLs will be skipped. Genuine copies of SQL Server are signed. Failure to verify the Authenticode signature might indicate that this isn't an authentic release of SQL Server. Install a genuine copy of SQL Server or contact customer support. |
Es ist keine Aktion erforderlich. Der OLE DB-Anbieter wird mit SHA256 signiert. Die SQL Server-Datenbank-Engine überprüft die signierte DLL-Datei nicht ordnungsgemäß. |
Der Befehl zum Zurücksetzen des Kennworts mithilfe von mssql-conf gibt den folgenden Fehler aus: Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information. |
Die Fehlermeldung ist falsch negativ. Die Kennwortzurücksetzung war erfolgreich, und Sie können das neue Kennwort weiterhin verwenden. Gilt nur für: NUR SQL Server 2022 (16.x)-Containerimages. |
Datenbanken
Die
master
-Datenbank kann nicht mit dem Hilfsprogramm mssql-conf verschoben werden. Andere Systemdatenbanken können mit mssql-conf verschoben werden.Wenn Sie eine Datenbank wiederherstellen, die in SQL Server für Windows gesichert wurde, müssen Sie die Klausel
WITH MOVE
in der Transact-SQL-Anweisung verwenden. Für weitere Informationen, siehe Migrieren einer SQL Server-Datenbank von Windows zu Linux mithilfe der Funktion Sichern und Wiederherstellen.Gewisse Algorithmen (Suites mit Verschlüsselungsverfahren) für TLS (Transport Layer Security) funktionieren in SQL Server für Linux nicht ordnungsgemäß. Dies führt zu Verbindungsfehlern beim Herstellen einer Verbindung mit SQL Server und beim Herstellen von Verbindungen zwischen Replikaten in Hochverfügbarkeitsgruppen.
Um dieses Problem zu beheben, modifizieren Sie das Konfigurationsskript
mssql.conf
für SQL Server für Linux an, um problematische Suites mit Verschlüsselungsverfahren zu deaktivieren, indem Sie wie folgt vorgehen:Fügen Sie den folgenden Abschnitt
/var/opt/mssql/mssql.conf
hinzu. Das Ausrufezeichen (!
) negiert den Ausdruck. Damit wird OpenSSL mitgeteilt, dass die Verschlüsselungssammlung im Folgenden nicht verwendet werden soll.[network] tlsciphers=AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:!ECDHE-RSA-AES128-GCM-SHA256:!ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES128-GCM-SHA256:!ECDHE-ECDSA-AES256-SHA384:!ECDHE-ECDSA-AES128-SHA256:!ECDHE-ECDSA-AES256-SHA:!ECDHE-ECDSA-AES128-SHA:!ECDHE-RSA-AES256-SHA384:!ECDHE-RSA-AES128-SHA256:!ECDHE-RSA-AES256-SHA:!ECDHE-RSA-AES128-SHA:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-DSS-AES256-SHA256:!DHE-DSS-AES128-SHA256:!DHE-DSS-AES256-SHA:!DHE-DSS-AES128-SHA:!DHE-DSS-DES-CBC3-SHA:!NULL-SHA256:!NULL-SHA
Starten Sie SQL Server mithilfe des folgenden Befehls neu.
sudo systemctl restart mssql-server
SQL Server 2014 (12.x)-Datenbanken unter Windows, die In-Memory-OLTP nutzen, können nicht in SQL Server für Linux wiederhergestellt werden. Wenn Ihre SQL Server 2014-Datenbank (12.x) In-Memory OLTP verwendet, führen Sie zuerst ein Upgrade der Datenbanken auf eine neuere Version von SQL Server unter Windows durch. Anschließend können Sie sie in SQL Server für Linux verschieben, mit Backup/Wiederherstellung oder Trennen/Anfügen.
Unter Linux wird die Benutzerberechtigung
ADMINISTER BULK OPERATIONS
zurzeit nicht unterstützt.TDE-komprimierte Sicherungen, die mit SQL Server 2019 (15.x) CU16 und höheren Versionen erstellt werden, können in früheren CU-Versionen von SQL Server 2019 (15.x) nicht wiederhergestellt werden. Weitere Informationen finden Sie Knowledge Base-Artikel FIX: Error 3241 occurs during executing RESTORE LOG or RESTORE DATABASE.
Mit Transparent Data Encryption (TDE) komprimierte Sicherungen, die mit früheren CU-Versionen von SQL Server 2019 (15.x) erstellt werden, können weiterhin mithilfe von SQL Server 2019 (15.x) CU16 und höher wiederhergestellt werden.
Wenn Sie SQL Server 2022 (16.x) auf Ubuntu 22.04 installieren, wird möglicherweise die folgende Fehlermeldung angezeigt:
Failed to start Microsoft SQL Server Database Engine
. Wenn Sie das Fehlerprotokoll überprüfen, wird ein falscher Pfad für die Systemdatenbanken angezeigt.Um dieses Problem zu beheben, starten Sie die Instanz im Einzelbenutzermodus, und verwenden Sie
ALTER DATABASE ... MODIFY FILE
, um den konfigurierten Speicherort der Systemdatenbanken an den Standardspeicherort/var/opt/mssql/data
zu schieben. Nachdem Sie diese Änderung vorgenommen haben, starten Sie den Dienst neu.
Network
Features, die ausgehende TCP-Verbindungen aus dem sqlservr
-Prozess nutzen, z. B. Verbindungsserver, PolyBase oder Verfügbarkeitsgruppen, funktionieren möglicherweise nicht, wenn beide der folgenden Bedingungen erfüllt sind:
Der Zielserver wurde mit einem Hostnamen anstelle einer IP-Adresse angegeben.
IPv6 ist im Kernel der Quellinstanz deaktiviert. Alle der folgenden Tests müssen bestanden werden, um zu überprüfen, ob IPv6 im Kernel Ihres Systems aktiviert ist:
cat /proc/cmdline
gibt die boot-Befehlszeile des aktuellen Kernels aus. Die Ausgabe darfipv6.disable=1
nicht enthalten.- Das Verzeichnis
/proc/sys/net/ipv6/
muss vorhanden sein. - Ein C-Programm, das
socket(AF_INET6, SOCK_STREAM, IPPROTO_IP)
aufruft, sollte erfolgreich sein – der Systemaufruf mussfd != -1
zurückgeben und darf nicht mitEAFNOSUPPORT
fehlschlagen.
Der genaue Fehler hängt vom Feature ab. Für verknüpfte Server wird ein Anmelde-Timeout-Fehler angezeigt. Bei Verfügbarkeitsgruppen verursacht die ALTER AVAILABILITY GROUP JOIN
-DDL auf dem sekundären Server nach fünf Minuten den Fehler download configuration timeout
.
Um dieses Problem zu umgehen, nutzen Sie eine der folgenden Optionen:
Verwenden Sie IP-Adressen anstelle von Hostnamen, um das Ziel der TCP-Verbindung anzugeben.
Aktivieren Sie IPv6 im Kernel, indem Sie
ipv6.disable=1
aus der Startbefehlszeile entfernen. Die Methode hierfür hängt von der Linux-Distribution und dem Bootloader (z. B. grub) ab. Wenn Sie IPv6 deaktivieren möchten, ist dies weiterhin durch Festlegen vonnet.ipv6.conf.all.disable_ipv6 = 1
in dersysctl
-Konfiguration möglich (Beispiel:/etc/sysctl.conf
). Auch wenn diese Einstellung verhindert, dass der Netzwerkadapter des Systems eine IPv6-Adresse erhält, ermöglicht es dennoch die Funktion dersqlservr
-Features.
TLS 1.3 nicht unterstützt
Gilt für: Nur SQL Server 2022 (16.x).
TLS 1.3 wird zwar in SQL Server 2022 (16.x) für Windows unterstützt, Sie müssen unter Linux jedoch TLS 1.2 verwenden.
Network File System (NFS)
Wenn Sie NFS-Remotefreigaben (Network File System) in der Produktion verwenden, beachten Sie die folgenden Anforderungen für die Unterstützung:
Verwenden Sie NFS Version 4.2 oder höher. Ältere NFS-Versionen unterstützen nicht die erforderlichen Features, z. B.
fallocate
oder die Erstellung von Sparsedateien, die häufig in modernen Dateisystemen enthalten sind.Verwenden Sie nur die Verzeichnisse vom Typ
/var/opt/mssql
in der NFS-Bereitstellung. Andere Dateien, wie z. B. die SQL Server-Systembinärdateien, werden nicht unterstützt.Stellen Sie sicher, dass NFS-Clients beim Einbinden der Remotefreigabe die Option
nolock
verwenden.
Lokalisierung
Wenn Sie während des Setups nicht das englische Gebietsschema (
en_us
) verwenden, müssen Sie die UTF-8-Codierung in Ihrer Bash-Sitzung bzw. in Ihrem Bash-Terminal verwenden. Wenn Sie die ASCII-Codierung verwenden, kann ein Fehler ähnlich der folgenden Ausgabe auftreten:UnicodeEncodeError: "ascii"-Codec kann Zeichen u'\xf1' in Position 8 nicht codieren: Ordnungszahl nicht im Bereich(128)
Wenn Sie die UTF-8-Codierung nicht verwenden können, führen Sie das Setup mit der
MSSQL_LCID
-Umgebungsvariablen aus, um Ihre Sprachauswahl festzulegen.sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
Wenn Sie den Befehl
mssql-conf setup
ausführen und eine nicht englischsprachige Installation von SQL Server durchführen, können nach dem lokalisierten Text „SQL Server wird konfiguriert...“ fehlerhafte erweiterte Zeichen angezeigt werden. Bei Installationen basierend auf Sprachen mit nicht-lateinischen Zeichen kann der Text vollständig fehlen. Der fehlende Text sollte die folgende lokalisierte Zeichenfolge darstellen:Die Lizenzierungs-PID wurde erfolgreich verarbeitet. Die neue Edition lautet [<Name>-Edition].
Diese Zeichenfolge wird nur zu Informationszwecken ausgegeben, wirkt sich nicht auf die erfolgreiche Installation von SQL Server auf irgendeine Weise aus.
Volltextsuche
In diesem Release sind nicht alle Filter verfügbar, darunter Filter für Microsoft Office-Dokumente. Eine Liste aller unterstützten Filter finden Sie unter Install SQL Server Full-Text Search on Linux (Installieren der SQL Server-Volltextsuche unter Linux).
SQL Server Integration Services (SSIS)
Das mssql-server-is
-Paket wird nicht auf SUSE Linux Enterprise Server (SLES) unterstützt. Dieses Paket wird unter Ubuntu und Red Hat Enterprise Linux (RHEL) unterstützt.
Integration Services-Pakete können ODBC-Verbindungen unter Linux verwenden. Diese Funktion wurde mit den Treibern von SQL Server und MySQL ODBC getestet, sollte jedoch auch mit einem Unicode-Treiber verwendet werden können, der der ODBC-Spezifikation entspricht. Zur Entwurfszeit können Sie entweder einen DSN oder eine Verbindungszeichenfolge angeben, um eine Verbindung mit den ODBC-Daten herzustellen. Sie können aber auch die Windows-Authentifizierung verwenden. Weitere Informationen hierzu finden Sie im Blogbeitrag mit der Ankündigung zur ODBC-Unterstützung unter Linux.
Die folgenden Features werden in diesem Release nicht unterstützt, wenn Sie SSIS-Pakete unter Linux ausführen:
- Integration Services-Katalogdatenbank
- Geplante Paketausführung des SQL Server Agent
- Windows-Authentifizierung
- Drittanbieterkomponenten
- Change Data Capture (CDC; Erfassung geänderter Daten)
- Integration Services Scale Out
- Azure Feature Pack für SSIS
- Hadoop- und HDFS-Unterstützung
- Microsoft Connector for SAP BW
Eine Liste der integrierten SSIS-Komponenten, die derzeit nicht unterstützt oder nur bedingt unterstützt werden, finden Sie unter Einschränkungen und bekannte Probleme bei SSIS unter Linux.
Weitere Informationen zu SSIS unter Linux finden Sie in den folgenden Artikeln:
- Blog post announcing SSIS support for Linux (Blogbeitrag mit Ankündigung der SSIS-Unterstützung für Linux).
- Installieren von SSIS (SQL Server Integration Services) unter Linux
- Extrahieren, Transformieren und Laden von Daten unter Linux mit SSIS
SQL Server Management Studio (SSMS)
Die folgenden Einschränkungen gelten für SQL Server Management Studio unter Windows mit Verbindung zu SQL Server für Linux.
Wartungspläne werden nicht unterstützt.
Verwaltungs-Data Warehouse und der Datensammler in SQL Server Management Studio werden nicht unterstützt.
Benutzeroberflächenkomponenten von SQL Server Management Studio, die über Optionen für die Windows-Authentifizierung oder für Windows-Ereignisprotokolle verfügen, funktionieren unter Linux nicht. Sie können diese Features mit anderen Optionen (z. B. SQL Server-Anmeldungen) weiterhin verwenden.
Die Anzahl beizubehaltender Protokolldateien kann nicht geändert werden.
Hochverfügbarkeit und Notfallwiederherstellung
Gilt für: Nur SQL Server 2022 (16.x).
Wenn Sie SQL Server 2022 (16.x) unter RHEL 9 als eingeschränkte Anwendung mit aktiviertem SELinux ausführen, funktioniert Pacemaker-Clustering möglicherweise nicht wie erwartet. Sie müssen SQL Server 2022 (16.x) als uneingeschränkte Anwendung mit aktiviertem SELinux installieren, um die Clusteringfunktionen von Pacemaker zu verwenden.
Machine Learning Services
Gilt für: Nur SQL Server 2022 (16.x).
Für SQL Server 2022 (16.x)-Pakete für RHEL 9 und Ubuntu 22.04 gibt es einige Voraussetzungen, die vor der Installation von Machine Learning Services mit cgroup-v1
zu berücksichtigen sind.
Als Voraussetzung muss
cgroup-v1
gemäß cgroupfs verwenden, um cgroups manuell zu verwalten Red Hat Enterprise Linux 9 von Red Hat aktiviert sein.Folgen Sie dann den Anweisungen, um SQL Machine Learning Services wie dokumentiert zu installieren.
Deaktivieren Sie die Isolation des Netzwerk-Namespace.
sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
Nehmen Sie einen Neustart des
mssql-launchpadd
-Diensts vor, damit diese Änderungen wirksam werden.sudo systemctl restart mssql-launchpadd