以下章節將描述 Linux 上的 SQL Server 的已知問題。
一般
下表列出 Linux 上的 SQL Server 上最常見的問題。
| 問題 | 決議 |
|---|---|
| 安裝 SQL Server 的主機名稱長度必須不超過 15 個字元。 | 名稱 /etc/hostname 改成長度為 15 個字元或更短的值。 |
| 手動將系統時間反向設定會導致 SQL Server 停止在 資料庫引擎 內更新內部系統時間。 | 重新啟動 SQL Server。 |
| 僅支援單一執行個體安裝。 | 要在同一台主機上有多個實例,建議使用 虛擬機 或 Linux 容器。 |
| SQL Server 組態管理員 無法連接到 Linux 上的 SQL Server。 | 設定管理員 在 Linux 上不被支援。 改用mssql-conf來管理 Linux 上的 SQL Server。 |
帳戶的預設語言 sa 為英文。 |
使用 sa 語句變更 ALTER LOGIN 帳戶的語言。 |
OLE DB 提供者會記錄下列警告: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. |
您不需要執行任何動作。 OLE DB 供應商使用 SHA256 簽章。 SQL Server Database Engine無法正確驗證已簽署的 .dll。 |
重置 mssql-conf 密碼指令會跳出以下錯誤:Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information. |
錯誤訊息為偽陰性。 密碼重設成功後,你可以繼續使用新密碼。 適用於:僅適用於 SQL Server 2022 (16.x) 容器映像檔。 |
資料庫
你無法用
mssql-conf工具移動master資料庫。 你可以用 移動其他系統資料庫。mssql-conf當你還原一個在SQL Server Windows上備份的資料庫時,必須在Transact-SQL語句中使用
WITH MOVE子句。 欲了解更多資訊,請參見 將 SQL Server 資料庫從 Windows 移至 Linux,並使用備份與還原。某些傳輸層安全(TLS)演算法(密碼套件)在 Linux 上的 Linux 上的 SQL Server 無法正常運作。 這種行為會導致連接 SQL Server 時連線失敗,並在高可用性群組中建立副本間連線時出現問題。
為了解決此問題,請修改
mssql.confLinux 版 Linux 上的 SQL Server 的設定腳本,以停用有問題的密碼套件:將下列區段新增至
/var/opt/mssql/mssql.conf。 感嘆號 (!) 用於否定該運算式。 此否定告訴 OpenSSL 不要使用後續的密碼套件。[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用以下指令重新啟動 SQL Server。
sudo systemctl restart mssql-server
你無法在使用 OLTP SQL Server In-Memory Linux 上的 SQL Server 的 Windows 還原 2014 (12.x) 資料庫。 如果您的 SQL Server 2014(12.x)資料庫使用 In-Memory OLTP,請首先將該資料庫升級到 Windows 平台上的最新版本的 SQL Server。 然後,用備份/還原或分離/連接,移到 Linux 上的 SQL Server。
Linux 目前不支援使用者
ADMINISTER BULK OPERATIONS權限。你無法將使用 SQL Server 2019 (15.x) CU 16 及以後版本製作的 透明資料加密 (TDE) 壓縮備份還原到 SQL Server 2019 (15.x) 的先前 CU 版本。 欲了解更多資訊,請參閱 FIX:執行 LOG 或 RESTORERESTORE時發生DATABASE錯誤 3241。
你仍然可以使用 SQL Server 2019(15.x)CU 16 及更新版本,來還原使用 SQL Server 2019(15.x) 先前 CU 版本所做的 TDE 壓縮備份。
當你在 Ubuntu 22.04 安裝 SQL Server 2022(16.x)時,可能會看到以下錯誤訊息:
Failed to start Microsoft SQL Server 資料庫引擎。 如果您檢閱錯誤記錄檔,則會看到系統資料庫的路徑不正確。若要解決此問題,請以單一使用者模式啟動執行個體,並使用
ALTER DATABASE ... MODIFY FILE將系統資料庫的設定位置移至預設位置/var/opt/mssql/data。 完成這個變更後,請重新啟動服務。
網路
涉及程序外發 TCP 連線 sqlservr 的功能,如連結伺服器、PolyBase 或可用性群組,若同時符合以下兩種條件,可能無法運作:
以主機名稱的形式而不是 IP 位址來指定目標伺服器。
來源執行個體的核心中已停用 IPv6。 若要確認您系統的核心中是否已啟用 IPv6,必須通過下列所有測試:
-
cat /proc/cmdline顯示目前核心的開機命令列。 輸出不得包含ipv6.disable=1。 -
/proc/sys/net/ipv6/目錄必須存在。 - 一個 C 程式只要能呼叫
socket(AF_INET6, SOCK_STREAM, IPPROTO_IP),應該就能成功。 系統呼叫必須回傳 ,fd != -1且不得在 時失敗。EAFNOSUPPORT
-
確切的錯誤需視功能而定。 針對連結的伺服器,您會看到登入逾時錯誤。 對於可用性群組, ALTER AVAILABILITY GROUP JOIN 次要的 DDL 在五分鐘 download configuration timeout 後會因錯誤而失敗。
若要暫時解決此問題,請使用下列其中一個選項:
使用 IP 而不是主機名稱來指定 TCP 連線的目標。
從開機命令列中移除
ipv6.disable=1以在核心中啟用 IPv6。 執行方式取決於 Linux 發行版本和開機載入器 (例如 grub)。 如果想要停用 IPv6,您仍然可以透過在net.ipv6.conf.all.disable_ipv6 = 1組態 (例如sysctl) 中設定/etc/sysctl.conf來停用。 雖然此設定讓系統的網路轉接卡無法取得 IPv6 位址,但可讓sqlservr功能正常運作。
TLS 1.3 在 SQL Server 2022 上不支援
適用於:僅限 SQL Server 2022(16.x)。
雖然 SQL Server 2022(16.x)支援 Windows 版本 TLS 1.3,但在 Linux 上必須使用 TLS 1.2。
備註
TLS 1.3 支援 SQL Server 2025(17.x)在 Ubuntu 22.04、Ubuntu 24.04、RHEL 9 及 RHEL 10 上。 TLS 1.3 預設為啟用。
網路檔案系統 (NFS)
如果您在生產環境中使用網路檔案系統 (NFS) 遠端共用,請注意下列支援需求:
使用 NFS 4.2 版或更新版本。 舊版 NFS 不支援新式檔案系統常用的必要功能,例如
fallocate和疏鬆檔案建立。NFS 掛接上只
/var/opt/mssql支援目錄。 其他檔案,如 SQL Server 系統的二進位檔,則不被支援。確定 NFS 用戶端在裝載遠端共用時使用
nolock選項。
與 Microsoft Entra 認證的 IPv6 連接
如果你的伺服器或容器啟用了 IPv6,請確保 IPv6 位址是可達且可路由的。 如果 IPv6 沒有完全設定好,針對 Microsoft Entra ID 的驗證請求可能會因為無法連線的 IPv6 端點而失敗。
若要控制 SQL Server 2022 CU 19 及更新版本中的 IPv6 DNS 解析行為,請在 network.ipv6dnsrecordslimit 中設定 mssql-conf。 欲了解更多資訊,請參閱 network.ipv6dnsrecordslimit。
本地化
如果進行設定期間您的地區設定不是英文 (
en_us),您就必須在 bash 工作階段/終端機中使用 UTF-8 編碼。 如果您使用 ASCII 編碼,您可能會看到以下類似的輸出:UnicodeEncodeError:「ascii」編解碼器無法在位置 8 中編碼字元 u'\xf1':序數不在範圍內(128)
如果你不能用 UTF-8 編碼,可以用環境變數執行設定
MSSQL_LCID來指定你的語言選擇。sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup當你執行
mssql-conf setup並執行非英語的 SQL Server 安裝時,可能會在本地化文字「配置 SQL Server...」後面看到錯誤的延伸字元。". 或者,針對非基於拉丁文字的安裝,此句子可能會完全遺失。 遺失的句子應該會顯示下列在地化字串:已成功處理授權 PID。 新版本為 [<Name> 版本]。
此字串僅供參考,不影響 SQL Server 的安裝。
全文搜尋
此版本並非所有篩選器都可用,包括 Microsoft Office 文件的篩選器。 有關支援的篩選器清單,請參見 在 Linux 上安裝 SQL Server Full-Text Search。
SQL Server Integration Services (SSIS)
SUSE Linux Enterprise Server (SLES) 上不支援 mssql-server-is 套件。 此套件支援 Ubuntu 與 Red Hat Enterprise Linux(RHEL)。
Integration Services 套件可以在 Linux 上使用 ODBC 連線。 此功能適用於 SQL Server 與 MySQL ODBC 驅動程式,也應適用於任何遵守 ODBC 規範的 Unicode ODBC 驅動程式。 在設計時,提供 DSN 或 連接字串 來連接 ODBC 資料;你也可以使用 Windows 驗證。 如需詳細資訊,請參閱宣佈在 Linux 上提供 ODBC 支援的部落格文章 \(英文\)。
此版本在 Linux 上執行 SSIS 套件時不支援以下功能:
- 整合服務目錄資料庫
- 由 SQL Server Agent 排程執行套件
- Windows 認證
- 協力廠商元件
- 異動資料擷取 (CDC)
- 整合服務擴展
- Azure 功能包適用於 SSIS
- Hadoop 和 HDFS 支援
- 適用於 SAP BW 的 Microsoft 連接器
關於有限或無支援的內建 SSIS 元件清單,請參見 Linux 上 SQL Server Integration Services (SSIS) 的功能支援與考量。
如需有關 Linux 上 SSIS 的詳細資訊,請參閱下列文章:
- 宣佈對 Linux 提供 SSIS 支援的部落格文章 \(英文\)。
- 安裝SQL Server Integration Services(SSIS)在 Linux
- 使用 SSIS 在 Linux 上擷取、轉換和載入資料
SQL Server Management Studio (SSMS)
以下限制適用於在 Windows 上運行的 SQL Server Management Studio 連接至運行於 Linux 的 SQL Server。
不支援維護計劃。
Management Data Warehouse(MDW)和 SQL Server Management Studio 中的資料收集器都不被支援。
SQL Server Management Studio 的 UI 元件若有 Windows 認證或 Windows 事件日誌選項,則無法支援 Linux。 你仍然可以將這些功能與其他選項一起使用,例如SQL Server登入。
你無法修改要保留的日誌檔案數量。
高可用性和災害復原
適用於:僅限 SQL Server 2022(16.x)。
當你在 RHEL 9 上以受限應用程式並啟用 SELinux 運行 SQL Server 2022(16.x)CU 16 及更早版本時,Pacemaker 叢集可能無法如預期運作。 您必須安裝 SQL Server 2022(16.x)作為一個無限制的應用程式,並開啟 SELinux,才能使用 Pacemaker 叢集功能。 此問題在 SQL Server 2022(16.x)CU 17 中已解決。
機器學習服務
適用於:僅限 SQL Server 2022(16.x)。
對於 SQL Server 2022(16.x)的 RHEL 9 和 Ubuntu 22.04 套件,安裝 機器學習 Services 前請先考慮這些cgroup-v1前置條件。
作為前提,啟用
cgroup-v1如 Using cgroupfs 手動管理 Red Hat Enterprise Linux 9 的 cgroups 所描述。接著按照文件中的說明安裝 SQL 機器學習服務。
停用網路命名空間隔離。
sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1重新啟動
mssql-launchpadd服務,讓變更生效。sudo systemctl restart mssql-launchpadd
SQL Server 2025 已知問題
以下問題影響 SQL Server 2025(17.x)。
Linux 上的 SQL Server 在混合 CPU 架構的機器上無法啟動
Issue:若 Linux 上的 SQL Server 實例使用第 12 代或更新的混合架構 CPU,且主機作業系統為 Linux,可能會無法啟動。
您可能會看到類似下列輸出的錯誤訊息:
Reason: 0x00000004 Message: ASSERT: Expression=(result * DrtlGetProcessorCoreCount() == DrtlGetProcessorCount()) File=LibOS\Windows\Kernel\SQLPal\common\dk\sos\src\sosnumap.cpp Line=208
如果您想使用 Linux 主機操作系統,可以通過禁用 BIOS 中的效率核心(E 核心)來解決此問題。 如果你用容器,或像 Hyper-V 這樣的虛擬機監控程式Windows(包括 WSL),問題就不會影響你。
Linux 作業系統不支援本地 ONNX 模型
CREATE EXTERNAL MODEL 本地 ONNX 模型直接託管於 SQL Server 上,無法於 SQL Server 2025 (17.x) 的 Linux 系統中使用。