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:

    1. 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
      
    2. 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 darf ipv6.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 muss fd != -1 zurückgeben und darf nicht mit EAFNOSUPPORT 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 von net.ipv6.conf.all.disable_ipv6 = 1 in der sysctl-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 der sqlservr-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.

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:

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).

Bei SQL Server 2022 (16.x)-Paketen für RHEL 9 und Ubuntu 22.04 können beim Aktivieren des HA/DR-Stapels mit Pacemaker Probleme mit automatischem und manuellem Failover auftreten. Diese Probleme sind derzeit auf den Pacemaker HA-Stapel beschränkt. Andere HA-Stapel, einschließlich HPE Serviceguard und DH2i DxEnterprise, haben diese Probleme nicht.

Verfügbarkeitsgruppe wechselt kontinuierlich die primäre Rolle

Wenn Sie mit Verfügbarkeitsgruppen (AGs) in SQL Server 2022 (16.x) auf RHEL 8, Ubuntu 20.04 und höheren Versionen arbeiten, können Sie eine Situation feststellen, in der die primäre Rolle in der AG kontinuierlich von einem Knoten zu einem anderen wechselt. Derzeit können Sie das Problem mit den folgenden Schritten umgehen:

  1. Aktualisieren Sie die ag_cluster-Ressourceneigenschaft failure-timeout auf 0s:

    pcs resource update ag_cluster meta failure-timeout=0s
    

    Weitere Informationen finden Sie unter Konfigurieren eines Pacemaker-Clusters für SQL Server-Verfügbarkeitsgruppen.

  2. Zurücksetzen der Fehleranzahl auf dem Pacemaker-Cluster:

    crm_failcount -r ag_resource_name -delete
    

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.

  1. Als Voraussetzung muss cgroup-v1 gemäß cgroupfs verwenden, um cgroups manuell zu verwalten Red Hat Enterprise Linux 9 von Red Hat aktiviert sein.

  2. Folgen Sie dann den Anweisungen, um SQL Machine Learning Services wie dokumentiert zu installieren.

  3. Deaktivieren Sie die Isolation des Netzwerk-Namespace.

    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Nehmen Sie einen Neustart des mssql-launchpadd-Diensts vor, damit diese Änderungen wirksam werden.

    sudo systemctl restart mssql-launchpadd