Dela via


SQL Server på Linux: Kända problem

I följande avsnitt beskrivs kända problem med SQL Server i Linux.

Allmänt

I följande tabell visas de vanligaste problemen med SQL Server i Linux.

Problematik Upplösning
Längden på värdnamnet där SQL Server är installerat måste vara högst 15 tecken. Ändra namnet i /etc/hostname till ett värde på 15 tecken eller mindre.
Om du manuellt ställer in systemtiden bakåt i tiden slutar SQL Server att uppdatera den interna systemtiden i databasmotorn. Starta om SQL Server.
Bara enskilda instansinstallationer stöds. Om du vill ha fler än en instans på en viss värd kan du överväga att använda virtuella datorer eller Linux-containrar.
SQL Server Configuration Manager kan inte ansluta till SQL Server i Linux. Ingen.
Standardspråket för sa-kontot är engelska. Ändra språket för sa-kontot med ALTER LOGIN-instruktionen.
OLE DB-providern loggar följande varning:

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.
Ingen åtgärd krävs. OLE DB-providern är signerad med SHA256. SQL Server Database Engine verifierar inte den signerade .dll korrekt.
Kommandot Återställ lösenord med mssql-conf genererar följande fel:

Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information.
Felmeddelandet är falskt negativt. Lösenordsåterställningen lyckades och du kan fortsätta använda det nya lösenordet.

gäller endast för: SQL Server 2022(16.x) containeravbildningar.

Databaser

  • Det går inte att flytta master-databasen med verktyget mssql-conf. Andra systemdatabaser kan flyttas med mssql-conf.

  • När du återställer en databas som säkerhetskopierades på SQL Server i Windows måste du använda WITH MOVE-satsen i Transact-SQL-instruktionen. Mer information finns i Migrera en SQL Server-databas från Windows till Linux med hjälp av säkerhetskopiering och återställning.

  • Vissa algoritmer (chiffersviter) för TLS (Transport Layer Security) fungerar inte korrekt med SQL Server i Linux. Detta resulterar i anslutningsfel vid försök att ansluta till SQL Server och problem med att upprätta anslutningar mellan repliker i grupper med hög tillgänglighet.

    Lös problemet genom att ändra mssql.conf konfigurationsskriptet för SQL Server i Linux för att inaktivera problematiska chiffersviter genom att följa dessa steg:

    1. Lägg till följande avsnitt i /var/opt/mssql/mssql.conf. Utropstecknet (!) negerar uttrycket. Detta talar om för OpenSSL att inte använda chiffersviten som följer.

      [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. Starta om SQL Server med följande kommando.

      sudo systemctl restart mssql-server
      
  • SQL Server 2014-databaser (12.x) i Windows som använder In-Memory OLTP kan inte återställas till SQL Server i Linux. Om SQL Server 2014-databasen (12.x) använder In-Memory OLTP uppgraderar du först databaserna till en nyare version av SQL Server i Windows. Sedan kan du flytta den till SQL Server på Linux, med säkerhetskopiering/återställning eller koppla från/koppla till.

  • Användarbehörighet ADMINISTER BULK OPERATIONS stöds inte i Linux just nu.

  • TDE-komprimerade säkerhetskopior som görs med SQL Server 2019 (15.x) CU 16 och senare versioner kan inte återställas till tidigare CU-versioner av SQL Server 2019 (15.x). För mer information, se FIX: Fel 3241 inträffar när du kör RESTORE LOG eller RESTORE DATABASE.

    Transparent datakryptering (TDE)-komprimerade säkerhetskopior som görs med tidigare CU-versioner av SQL Server 2019 (15.x) kan fortfarande återställas med hjälp av SQL Server 2019 (15.x) CU 16 och senare versioner.

  • När du installerar SQL Server 2022 (16.x) på Ubuntu 22.04 kan följande felmeddelande visas: Failed to start Microsoft SQL Server Database Engine. Om du granskar felloggen ser du en felaktig sökväg för systemdatabaserna.

    Du kan undvika det här problemet genom att starta instansen i enanvändarläge och använda ALTER DATABASE ... MODIFY FILE för att flytta den konfigurerade platsen för systemdatabaserna till standardplatsen /var/opt/mssql/data. Starta om tjänsten när du har gjort den här ändringen.

Nätverk

Funktioner som omfattar utgående TCP-anslutningar från sqlservr processen, till exempel länkade servrar, PolyBase eller tillgänglighetsgrupper, kanske inte fungerar om båda följande villkor uppfylls:

  • Målservern anges som ett värdnamn och inte en IP-adress.

  • Källinstansen har IPv6 inaktiverats i kerneln. För att kontrollera om systemet har IPv6 aktiverat i kerneln måste alla följande tester godkännas:

    • cat /proc/cmdline skriver ut start-cmdline för den aktuella kerneln. Utdata får inte innehålla ipv6.disable=1.
    • Katalogen /proc/sys/net/ipv6/ måste finnas.
    • Ett C-program som anropar socket(AF_INET6, SOCK_STREAM, IPPROTO_IP) ska lyckas – systemanropet måste returnera en fd != -1 och inte misslyckas med EAFNOSUPPORT.

Det exakta felet beror på funktionen. För länkade servrar visas ett inloggningsfel med tidsgräns. För tillgänglighetsgrupper misslyckas ALTER AVAILABILITY GROUP JOIN DDL på den sekundära datorn efter fem minuter med ett download configuration timeout fel.

Du kan undvika det här problemet genom att göra något av följande alternativ:

  • Använd IP-adresser i stället för värdnamn för att ange målet för TCP-anslutningen.

  • Aktivera IPv6 i kerneln genom att ta bort ipv6.disable=1 från startkommandoraden. Metoden beror på Linux-distributionen och startladdaren, till exempel grub. Om du vill att IPv6 ska inaktiveras kan du fortfarande inaktivera det genom att ange net.ipv6.conf.all.disable_ipv6 = 1 i konfigurationen sysctl (till exempel /etc/sysctl.conf). Även om den här inställningen hindrar systemets nätverkskort från att hämta en IPv6-adress kan sqlservr funktioner fungera.

TLS 1.3 stöds inte

gäller endast för: SQL Server 2022 (16.x).

TLS 1.3 stöds på SQL Server 2022 (16.x) för Windows, men du måste använda TLS 1.2 i Linux.

NFS (Network File System)

Observera följande supportkrav om du använder NFS-fjärrresurser (Network File System) i produktion:

  • Använd NFS version 4.2 eller senare versioner. Äldre versioner av NFS stöder inte nödvändiga funktioner, till exempel fallocate och gles filskapande, som är gemensamma för moderna filsystem.

  • Lokalisera endast /var/opt/mssql mapparna på NFS-anslutningen. Andra filer, till exempel SQL Server-systembinärfiler, stöds inte.

  • Se till att NFS-klienter använder alternativet nolock när de monterar fjärrresursen.

Lokalisering

  • Om ditt språk inte är engelska (en_us) under installationen måste du använda UTF-8-kodning i bash-sessionen/terminalen. Om du använder ASCII-kodning kan du se ett fel som liknar följande utdata:

    UnicodeEncodeError: 'ascii' codec kan inte koda tecken u'\xf1' i position 8: ordningstal inte inom intervallet(128)

    Om du inte kan använda UTF-8-kodning kör du konfigurationen med hjälp av MSSQL_LCID miljövariabeln för att ange ditt språkval.

    sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
    
  • När du kör mssql-conf setupoch utför en icke-engelsk installation av SQL Server kan felaktiga utökade tecken visas efter den lokaliserade texten "Konfigurera SQL Server...". Eller för icke-latinska installationer kanske meningen saknas helt. Den mening som saknas bör visa följande lokaliserade sträng:

    Licens-PID:en har bearbetats framgångsrikt. Den nya utgåvan är [<Name> utgåva].

    Den här strängen är endast utdata i informationssyfte och påverkar inte den lyckade installationen av SQL Server på något sätt.

Alla filter är inte tillgängliga med den här versionen, inklusive filter för Microsoft Office-dokument. En lista över filter som stöds finns i Installera SQL Server Full-Text Search på Linux.

SQL Server Integration Services (SSIS)

Det mssql-server-is paketet stöds inte på SUSE Linux Enterprise Server (SLES). Paketet stöds på Ubuntu och Red Hat Enterprise Linux (RHEL).

Integration Services-paket kan använda ODBC-anslutningar i Linux. Den här funktionen testades med SQL Server- och MySQL ODBC-drivrutinerna, men förväntas också fungera med valfri Unicode ODBC-drivrutin som observerar ODBC-specifikationen. Vid designtillfället kan du ange antingen ett DSN eller en anslutningssträng för att ansluta till ODBC-data. Du kan också använda Windows-autentisering. Mer information finns i blogginlägget om ODBC-support på Linux.

Följande funktioner stöds inte i den här versionen när du kör SSIS-paket på Linux:

  • Katalogdatabas för Integration Services
  • Schemalagd paketkörning av SQL Server Agent
  • Windows-autentisering
  • Komponenter från tredje part
  • Ändra datainsamling (CDC)
  • Utskalning av integrationstjänster
  • Azure-funktionspaket för SSIS
  • Stöd för Hadoop och HDFS
  • Microsoft Connector för SAP BW

En lista över inbyggda SSIS-komponenter som för närvarande inte stöds eller som stöds med begränsningar finns i Begränsningar och kända problem för SSIS på Linux.

Mer information om SSIS i Linux finns i följande artiklar:

SQL Server Management Studio (SSMS)

Följande begränsningar gäller för SQL Server Management Studio i Windows som är anslutet till SQL Server i Linux.

  • Underhållsplaner stöds inte.

  • Hanteringsdatalager (MDW) och datainsamlaren i SQL Server Management Studio stöds inte.

  • SQL Server Management Studio-gränssnittskomponenter som har Windows-autentisering eller Windows-händelseloggalternativ fungerar inte med Linux. Du kan fortfarande använda dessa funktioner med andra alternativ, till exempel SQL Server-inloggningar.

  • Det går inte att ändra antalet loggfiler som ska behållas.

Hög tillgänglighet och haveriberedskap

gäller endast för: SQL Server 2022 (16.x).

När du kör SQL Server 2022 (16.x) CU 16 och tidigare versioner på RHEL 9 som ett begränsat program med SELinux aktiverat kan Pacemaker-klustring kanske inte fungera som förväntat. Du måste installera SQL Server 2022 (16.x) som en obegränsad applikation med SELinux aktiverat för att kunna använda Pacemaker-klusterfunktioner. Det här problemet löses i SQL Server 2022 (16.x) CU 17.

Maskininlärningstjänster

gäller endast för: SQL Server 2022 (16.x).

För SQL Server 2022-paket (16.x) för RHEL 9 och Ubuntu 22.04 finns det vissa förutsättningar att ta hänsyn till med cgroup-v1innan du installerar Machine Learning Services.

  1. Som en förutsättning måste cgroup-v1 aktiveras enligt Använda cgroupfs för att manuellt hantera cgroups Red Hat Enterprise Linux 9 från Red Hat.

  2. Följ sedan anvisningarna för att installera SQL Machine Learning Services enligt beskrivningen.

  3. Inaktivera isolering av nätverksnamnområde.

    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Starta om mssql-launchpadd tjänsten för att ändringarna ska börja gälla.

    sudo systemctl restart mssql-launchpadd