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: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
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ållaipv6.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 enfd != -1
och inte misslyckas medEAFNOSUPPORT
.
-
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 angenet.ipv6.conf.all.disable_ipv6 = 1
i konfigurationensysctl
(till exempel/etc/sysctl.conf
). Även om den här inställningen hindrar systemets nätverkskort från att hämta en IPv6-adress kansqlservr
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 setup
och 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.
Full-Text sök
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:
- blogginlägg om SSIS-stöd för Linux.
- Installera SQL Server Integration Services (SSIS) på Linux
- Extrahera, transformera och läsa in data i Linux med SSIS
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-v1
innan du installerar Machine Learning Services.
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.Följ sedan anvisningarna för att installera SQL Machine Learning Services enligt beskrivningen.
Inaktivera isolering av nätverksnamnområde.
sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
Starta om
mssql-launchpadd
tjänsten för att ändringarna ska börja gälla.sudo systemctl restart mssql-launchpadd