Udostępnij za pośrednictwem


SQL Server on Linux: Znane problemy

W poniższych sekcjach opisano znane problemy z SQL Server on Linux.

Ogólne

W poniższej tabeli wymieniono najczęstsze problemy z SQL Server on Linux.

Problematyka Rezolucja
Długość nazwy hosta, w której zainstalowano SQL Server, musi wynosić 15 znaków lub mniej. Zmień nazwę w /etc/hostname na wartość mającą 15 znaków lub mniej.
Ręczne cofnięcie czasu systemowego powoduje, że SQL Server zatrzymuje aktualizowanie wewnętrznego czasu systemowego w silniku bazy danych. Uruchom ponownie SQL Server.
Obsługiwane są tylko instalacje pojedynczej instancji. Jeśli chcesz mieć więcej niż jedno wystąpienie na danym hoście, rozważ użycie maszyn wirtualnych lub kontenerów systemu Linux.
Menadżer konfiguracji SQL Server nie może nawiązać połączenia z SQL Serverem na Linuxie. Żaden.
Domyślnym językiem sa konta jest angielski. Zmień język konta sa za pomocą instrukcji ALTER LOGIN.
Dostawca OLE DB rejestruje następujące ostrzeżenie:

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.
Nie trzeba podejmować żadnych działań. Dostawca OLE DB jest podpisany przy użyciu algorytmu SHA256. SQL Server Database Engine nie weryfikuje poprawnie podpisanej .dll.
Polecenie Resetuj hasło przy użyciu narzędzia mssql-conf zgłasza następujący błąd:

Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information.
Komunikat o błędzie jest fałszywie ujemny. Resetowanie hasła zakończyło się pomyślnie i można kontynuować korzystanie z nowego hasła.

Applies to: SQL Server 2022 (16.x) tylko obrazy kontenerów.

Baz danych

  • master Nie można przenieść bazy danych za pomocą narzędzia mssql-conf. Inne systemowe bazy danych można przenosić za pomocą narzędzia mssql-conf.

  • Podczas przywracania bazy danych, której kopia zapasowa została utworzona na SQL Server w Windows, należy użyć klauzuli WITH MOVE w instrukcji Transact-SQL. Aby uzyskać więcej informacji, zobacz Migrate a SQL Server database from Windows to Linux using backup and restore (Tworzenie kopii zapasowych i przywracanie).

  • Niektóre algorytmy (zestawy szyfrowania) dla protokołu Transport Layer Security (TLS) nie działają prawidłowo z SQL Server on Linux. Powoduje to błędy połączeń podczas próby nawiązania połączenia z SQL Server oraz problemy z nawiązywaniem połączeń między replikami w grupach wysokiej dostępności.

    Aby rozwiązać ten problem, zmodyfikuj skrypt konfiguracji mssql.conf dla SQL Server on Linux, aby wyłączyć problematyczne zestawy szyfrowania, wykonując następujące kroki:

    1. Dodaj następującą sekcję do /var/opt/mssql/mssql.conf. Symbol wykrzyknika (!) neguje wyrażenie. Informuje to, że biblioteka OpenSSL nie używa następującego pakietu szyfrowania.

      [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. Uruchom ponownie SQL Server za pomocą następującego polecenia.

      sudo systemctl restart mssql-server
      
  • SQL Server 2014 (12.x) baz danych na Windows, które korzystają z In-Memory OLTP, nie można przywrócić do SQL Server na Linux. Jeśli baza danych SQL Server 2014 (12.x) używa In-Memory OLTP, najpierw uaktualnij bazy danych do nowszej wersji SQL Server na Windows. Następnie możesz przenieść to do SQL Server na Linuxie, korzystając z kopii zapasowej i przywracania lub odłączyć/podłączyć.

  • Obecnie uprawnienia ADMINISTER BULK OPERATIONS użytkownika nie są obsługiwane w systemie Linux.

  • Nie można przywrócić kopii zapasowych skompresowanych przez funkcję TDE przy użyciu SQL Server 2019 (15.x) CU 16 i nowszych wersji do poprzednich wersji aktualizacji CU SQL Server 2019 (15.x). Aby uzyskać więcej informacji, zobacz FIX: Błąd 3241 występuje podczas wykonywania funkcji RESTORE LOG lub RESTORE DATABASE.

    Transparent Data Encryption (TDE) skompresowane kopie zapasowe, które są tworzone przy użyciu poprzednich wersji CU SQL Server 2019 (15.x), można nadal przywrócić przy użyciu SQL Server 2019 (15.x) CU 16 oraz kolejnych wersji.

  • Podczas instalowania SQL Server 2022 (16.x) w systemie Ubuntu 22.04 może zostać wyświetlony następujący komunikat o błędzie: Failed to start Microsoft SQL Server Database Engine. Jeśli przeglądasz dziennik błędów, zobaczysz nieprawidłową ścieżkę dla systemowych baz danych.

    Aby obejść ten problem, uruchom wystąpienie w trybie pojedynczego użytkownika i użyj polecenia ALTER DATABASE ... MODIFY FILE , aby przenieść skonfigurowaną lokalizację systemowych baz danych do domyślnej lokalizacji /var/opt/mssql/data. Po wprowadzeniu tej zmiany uruchom ponownie usługę.

Sieć

Funkcje obejmujące wychodzące połączenia TCP z sqlservr procesu, takie jak serwery połączone, PolyBase lub grupy dostępności, mogą nie działać, jeśli spełnione są oba następujące warunki:

  • Serwer docelowy jest określony jako nazwa hosta, a nie adres IP.

  • Wystąpienie źródłowe ma wyłączony protokół IPv6 w jądrze. Aby sprawdzić, czy system ma włączony protokół IPv6 w jądrze, wszystkie następujące testy muszą przejść:

    • cat /proc/cmdline drukuje wiersz polecenia rozruchowego bieżącego jądra. Dane wyjściowe nie mogą zawierać elementu ipv6.disable=1.
    • Katalog /proc/sys/net/ipv6/ musi istnieć.
    • Program języka C, który wywołuje socket(AF_INET6, SOCK_STREAM, IPPROTO_IP), powinien zakończyć się powodzeniem — wywołanie systemowe musi zwrócić fd != -1 i nie może zakończyć się niepowodzeniem EAFNOSUPPORT.

Dokładny błąd zależy od funkcji. W przypadku serwerów połączonych zostanie wyświetlony błąd przekroczenia limitu czasu logowania. W przypadku grup dostępności, ALTER AVAILABILITY GROUP JOIN DDL na głównym serwerze zapasowym zakończy się niepowodzeniem po pięciu minutach z powodu błędu download configuration timeout.

Aby obejść ten problem, wykonaj jedną z następujących opcji:

  • Użyj adresów IP zamiast nazw hostów, aby określić cel połączenia TCP.

  • Włącz protokół IPv6 w jądrze, usuwając z ipv6.disable=1 wiersza polecenia rozruchu. Metoda zależy od dystrybucji systemu Linux i bootloadera, takiego jak grub. Jeśli chcesz wyłączyć protokół IPv6, możesz go nadal wyłączyć, ustawiając net.ipv6.conf.all.disable_ipv6 = 1 w konfiguracji sysctl (na przykład /etc/sysctl.conf). Mimo że to ustawienie uniemożliwia karcie sieciowej systemu uzyskanie adresu IPv6, pozwala funkcyjnym elementom sqlservr działać poprawnie.

Protokół TLS 1.3 nie jest obsługiwany w SQL Server 2022

Applies to: SQL Server 2022 (tylko 16.x).

Chociaż protokół TLS 1.3 jest obsługiwany w SQL Server 2022 (16.x) dla Windows, należy użyć protokołu TLS 1.2 w systemie Linux.

Uwaga / Notatka

Protokół TLS 1.3 jest obsługiwany w wersji SQL Server 2025 (17.x) w systemie Ubuntu 22.04, Ubuntu 24.04, RHEL 9 i RHEL 10. Protokół TLS 1.3 jest domyślnie włączony.

Sieciowy system plików (NFS)

Jeśli używasz zdalnych udziałów NFS w środowisku produkcyjnym, należy pamiętać o następujących wymaganiach wsparcia:

  • Użyj systemu plików NFS w wersji 4.2 lub nowszej. Starsze wersje NFS nie obsługują wymaganych funkcji, takich jak fallocate i tworzenie plików rozrzedzonych, typowych dla nowoczesnych systemów plików.

  • Znajdź tylko katalogi /var/opt/mssql na montowaniu NFS. Inne pliki, takie jak pliki binarne systemu SQL Server, nie są obsługiwane.

  • Upewnij się, że klienci systemu plików NFS używają nolock opcji podczas instalowania udziału zdalnego.

Lokalizacja

  • Jeśli ustawienia regionalne nie są angielskie (en_us) podczas konfiguracji, należy użyć kodowania UTF-8 w sesji/terminalu Bash. Jeśli używasz kodowania ASCII, może zostać wyświetlony błąd podobny do następujących danych wyjściowych:

    UnicodeEncodeError: koder kodowy „ascii” nie może zakodować znaku u'\xf1' na pozycji 8: wartość nie mieści się w zakresie (128)

    Jeśli nie możesz użyć kodowania UTF-8, uruchom instalatora przy użyciu zmiennej środowiskowej MSSQL_LCID , aby określić wybór języka.

    sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
    
  • Po uruchomieniu mssql-conf setup oraz wykonaniu instalacji nieanglojęzycznej SQL Server mogą być wyświetlane niepoprawne znaki rozszerzone po zlokalizowanym tekście "Konfigurowanie SQL Server...". Lub, w przypadku instalacji nielatynicznych, zdanie może być całkowicie nieobecne. Brakujące zdanie powinno wyświetlać następujący zlokalizowany ciąg znaków:

    Pomyślnie przetworzono identyfikator PID licencjonowania. Nowe wydanie to [<Nazwa> edycja].

    Ten ciąg jest przeznaczony tylko do celów informacyjnych, nie wpływa na pomyślną instalację SQL Server w żaden sposób.

Nie wszystkie filtry są dostępne w tej wersji, w tym filtry dla dokumentów Microsoft Office. Aby uzyskać listę obsługiwanych filtrów, zobacz Install SQL Server Full-Text Search w systemie Linux.

SQL Server Integration Services (SSIS)

Pakiet mssql-server-is nie jest obsługiwany w systemie SUSE Linux Enterprise Server (SLES). Pakiet jest obsługiwany w systemach Ubuntu i Red Hat Enterprise Linux (RHEL).

Pakiety usług Integration Services mogą używać połączeń ODBC w systemie Linux. Ta funkcja została przetestowana przy użyciu SQL Server i sterowników ODBC MySQL, ale oczekuje się również, że będzie działać z dowolnym sterownikiem Unicode ODBC, który obserwuje specyfikację ODBC. W czasie projektowania można podać nazwę DSN lub ciąg połączenia w celu nawiązania połączenia z danymi ODBC. Można również użyć uwierzytelniania Windows. Aby uzyskać więcej informacji, zobacz wpis w blogu informujący o obsłudze ODBC w systemie Linux.

Następujące funkcje nie są obsługiwane w tej wersji podczas uruchamiania pakietów usług SSIS w systemie Linux:

  • Baza danych katalogu usług Integration Services
  • Zaplanowane wykonywanie pakietu przez SQL Server Agent
  • Uwierzytelnianie Windows
  • Komponenty stron trzecich
  • Przechwytywanie zmian danych (CDC)
  • Skalowanie w poziomie usług Integration Services
  • Azure Feature Pack dla SSIS
  • Obsługa usług Hadoop i HDFS
  • Microsoft Konektor dla SAP BW

Aby uzyskać listę wbudowanych składników usług SSIS, które nie są obecnie obsługiwane lub które są obsługiwane z ograniczeniami, zobacz Ograniczenia i znane problemy dotyczące usług SSIS w systemie Linux.

Aby uzyskać więcej informacji o usłudze SSIS w systemie Linux, zobacz następujące artykuły:

SQL Server Management Studio (SSMS)

Następujące ograniczenia dotyczą SQL Server Management Studio Windows połączonych z SQL Server on Linux.

  • Plany konserwacji nie są wspierane.

  • Magazyn Danych Zarządzania (MDW) i kolektor danych w SQL Server Management Studio nie są obsługiwane.

  • SQL Server Management Studio składniki interfejsu użytkownika, które mają uwierzytelnianie Windows lub opcje dziennika zdarzeń Windows nie działają w systemie Linux. Można nadal korzystać z tych funkcji z innymi opcjami, takimi jak logowania SQL Server.

  • Nie można modyfikować liczby zachowywanych plików dziennika.

Wysoka dostępność i odzyskiwanie po awarii

Applies to: SQL Server 2022 (tylko 16.x).

Po uruchomieniu SQL Server 2022 (16.x) CU 16 i starszych wersji w systemie RHEL 9 jako ograniczonej aplikacji z włączonym SELinux, klastrowanie Pacemaker może działać inaczej niż oczekiwano. Aby korzystać z funkcji klastrowania Pacemaker, musisz zainstalować SQL Server 2022 (16.x) jako nieograniczoną aplikację z włączonym programem SELinux. Ten problem został rozwiązany w SQL Server 2022 (16.x) CU 17.

usługi Machine Learning

Applies to: SQL Server 2022 (tylko 16.x).

W przypadku pakietów SQL Server 2022 (16.x) dla systemów RHEL 9 i Ubuntu 22.04 należy uwzględnić pewne wymagania wstępne dotyczące cgroup-v1 przed zainstalowaniem usług Machine Learning.

  1. Aby ręcznie zarządzać grupami kontrolnymi w Red Hat Enterprise Linux 9 za pomocą cgroupfs, należy włączyć cgroup-v1 zgodnie z dokumentacją „Using cgroupfs to manually manage cgroups Red Hat Enterprise Linux 9” dostarczoną przez Red Hat.

  2. Następnie postępuj zgodnie z instrukcjami, aby instalować usługi SQL Machine Learning Services zgodnie z dokumentacją.

  3. Wyłącz izolację przestrzeni nazw sieci.

    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Uruchom ponownie mssql-launchpadd usługę, aby te zmiany zaczęły obowiązywać.

    sudo systemctl restart mssql-launchpadd
    

Znane problemy w SQL Server 2025 r.

Następujące problemy mają wpływ na SQL Server 2025 (17.x).

SQL Server on Linux nie można uruchomić na maszynach z architekturą hybrydowego procesora CPU

Issue: Instancje SQL Server na systemie Linux mogą nie uruchomić się, jeśli maszyna używa procesora Intel 12. generacji lub nowszej architektury hybrydowej, a system operacyjny hosta to Linux.

Może zostać wyświetlony komunikat o błędzie podobny do następujących danych wyjściowych:

Reason: 0x00000004 Message: ASSERT: Expression=(result * DrtlGetProcessorCoreCount() == DrtlGetProcessorCount()) File=LibOS\Windows\Kernel\SQLPal\common\dk\sos\src\sosnumap.cpp Line=208

Jeśli chcesz użyć hosta z systemem Linux, możesz obejść ten problem, wyłączając rdzenie efektywności (E-rdzenie) w systemie BIOS. Jeśli używasz kontenerów lub funkcji hypervisor, takiej jak Hyper-V w Windows (w tym WSL), nie ma to wpływu.

Lokalne modele ONNX nie są obsługiwane w systemach operacyjnych Linux

UTWÓRZ MODEL ZEWNĘTRZNY lokalne modele ONNX hostowane bezpośrednio na SQL Server nie są obecnie dostępne dla systemu Linux w SQL Server 2025 (17.x).