Linux 上的 SQL Server 2022 的发行说明

适用于: SQL Server 2022 (16.x) - Linux

以下发行说明适用于 Linux 上运行的 SQL Server 2022 (16.x)。 本文按各版本分为不同的部分。 有关详细的可支持性和已知问题,请参阅已知问题。 每个版本都链接到介绍更改的支持性文章,以及 Linux 包下载。

这些发行说明专门用于 SQL Server 2022 (16.x) 版本。 有关其他版本的发行说明,请参阅以下文章:

支持的平台

平台 文件系统 安装指南 获取
Red Hat Enterprise Linux 8.0 - 8.6 Server XFS 或 EXT4 安装指南 获取 RHEL 8.0
SUSE Enterprise Linux Server v15 (SP1 - SP3) XFS 或 EXT4 安装指南 获取 SLES v15
Ubuntu 20.04 LTS XFS 或 EXT4 安装指南 Ubuntu 20.04
Linux 上的 Docker 引擎 1.8+ 空值 安装指南 获取 Docker

提示

有关详细信息,请查看 Linux 上 SQL Server 的系统要求。 有关 SQL Server 的最新支持策略,请参阅 Microsoft SQL Server 的技术支持策略

工具

以 SQL Server 为目标的大多数现有客户端工具都可以无缝地以 Linux 上运行的 SQL Server 为目标。 某些工具与 Linux 配合使用时可能有特定的版本要求。 有关 SQL Server 工具的完整列表,请参阅适用于 SQL Server 的 SQL 工具和实用程序

所有包的最新版本

本部分列出了 SQL Server 2022 中每个分发版包的最新版本。 下表显示了最新版本,即 CU 2。 有关完整的发布历史记录,请参阅 SQL Server 2022 的发布历史记录

版本 发布 Date 构建 知识库文章
SQL Server 2022 (16.x) CU 2 2023 年 3 月 15 日 16.0.4015.1 支持文章
分发 包名称 包版本 下载
Red Hat Enterprise Linux
RHEL 8 数据库引擎 16.0.4015.1-10 数据库引擎 RPM 包
RHEL 8 扩展性 16.0.4015.1-10 扩展性 RPM 包
RHEL 8 全文搜索 16.0.4015.1-10 全文搜索 RPM 包
RHEL 8 高可用性 16.0.4015.1-10 高可用性 RPM 包
RHEL 8 PolyBase 16.0.4015.1-10 PolyBase RPM 包
RHEL 8 SSIS 16.0.950.9-1 SSIS RPM 包
SUSE Enterprise Linux Server
SLES 15 数据库引擎 16.0.4015.1-10 数据库引擎 RPM 包
SLES 15 扩展性 16.0.4015.1-10 扩展性 RPM 包
SLES 15 全文搜索 16.0.4015.1-10 全文搜索 RPM 包
SLES 15 高可用性 16.0.4015.1-10 高可用性 RPM 包
SLES 15 PolyBase 16.0.4015.1-10 PolyBase RPM 包
Ubuntu
Ubuntu 20.04 数据库引擎 16.0.4015.1-10 数据库引擎 Debian 包
Ubuntu 20.04 扩展性 16.0.4015.1-10 扩展性 Debian 包
Ubuntu 20.04 全文搜索 16.0.4015.1-10 全文搜索 Debian 包
Ubuntu 20.04 高可用性 16.0.4015.1-10 高可用性 Debian 包
Ubuntu 20.04 PolyBase 16.0.4015.1-10 PolyBase Debian 包
Ubuntu 20.04 SSIS 16.0.950.9-1 SSIS Debian 包

如何安装更新

配置 CU 存储库 (mssql-server-2022)时,可在执行新安装时获得 SQL Server 包的最新 CU。 如果需要 Docker 容器映像,请参阅适用于 Docker 引擎的 Linux 上的 Microsoft SQL Server 的官方映像。 有关存储库配置的详细信息,请参阅为 Linux 上的 SQL Server 配置存储库

如果要更新现有的 SQL Server 包,请为每个包运行相应的更新命令以获取最新的 CU。 有关每个包的特定更新说明,请参阅以下安装指南:

版本历史记录

下表列出了 SQL Server 2022 (16.x) 的发布历史记录。

发布 版本 发布日期
CU 2 16.0.4015.1 2023 年 3 月 15 日
CU 1 16.0.4003.1 2023-02-16
GDR 1 16.0.1050.5 2023-02-14
GA 16.0.1000.6 2022 年 11 月 16 日

已知问题

以下部分介绍了 Linux 上 SQL Server 2022 (16.x) 的已知问题。

常规

  • 安装 SQL Server 的主机名的长度不能超过 15 个字符。

    • 解决方法:更改 /etc/hostname 中的名称,使其不超过 15 个字符。
  • 手动将系统时间设置为时间倒移,会导致 SQL Server 停止更新 SQL Server 中的内部系统时间。

    • 解决方法:重新启动 SQL Server。
  • 仅支持单个实例安装。

    • 解决方法:如果希望在给定主机上安装多个实例,请考虑使用 VM 或 Docker 容器。
  • SQL Server Configuration Manager 无法连接到 Linux 上的 SQL Server。

  • sa 登录名的默认语言是英语。

    • 解决方法:使用 ALTER LOGIN 语句更改 sa 登录名的语言。
  • OLEDB 提供程序记录以下警告: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 is not an authentic release of SQL Server. Install a genuine copy of SQL Server or contact customer support.

    • 解决方法:不需要执行任何操作。 OLEDB 提供程序使用 SHA256 进行签名。 SQL Server 数据库引擎无法正确验证已签名的 .dll。
  • 使用 mssql-conf 的重置密码命令引发以下错误:'Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information.'

    • 解决方法:错误消息为误报。 密码重置成功,可以继续使用新密码。 此问题仅适用于 SQL Server 2022 (16.x) 容器映像,在以前版本的 SQL Server 中未出现。

数据库

  • 不能使用 mssql-conf 实用工具移动 master 数据库。 可使用 mssql-conf 移动其他系统数据库。

  • 还原在 Windows 上 SQL Server 中备份的数据库时,必须在 Transact-SQL 语句中使用 WITH MOVE 子句。

  • 传输层安全性 (TLS) 的某些算法(密码套件)无法在 Linux 上的 SQL Server 中正常运行。 这会在尝试连接到 SQL Server 时导致连接失败,以及在高可用性组中的副本之间建立连接时出现问题。

    • 解决方法:通过执行以下操作,修改 Linux 上的 SQL Server 的 mssql.conf 配置脚本以禁用有问题的密码套件:

      1. 将下列内容添加到 /var/opt/mssql/mssql.conf

        [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
        

        注意

        在前面的代码中,! 对表达式进行求反。 这向 OpenSSL 指明不使用以下密码套件。

      2. 使用以下命令重启 SQL Server。

        sudo systemctl restart mssql-server
        
  • Windows 上使用内存中 OLTP 的 SQL Server 2014 (12.x) 数据库无法还原到 Linux 上的 SQL Server。 要还原使用内存中 OLTP 的 SQL Server 2014 (12.x) 数据库,请先将数据库升级到 Windows 上的 SQL Server 的较新版本,然后再通过备份/还原或分离/附加将数据库移至 Linux 上的 SQL Server。

  • 目前 Linux 不支持用户权限 ADMINISTER BULK OPERATIONS

网络

如果满足以下两个条件,则涉及来自 sqlservr 进程的出站 TCP 连接(如链接服务器、PolyBase 或可用性组)的功能可能不起作用:

  1. 目标服务器被指定为主机名而不是 IP 地址。

  2. 源实例已在内核中禁用 IPv6。 要验证系统是否在内核中启用了 IPv6,以下所有测试都必须通过:

    • cat /proc/cmdline 将输出当前内核的引导 cmdline。 输出不得包含 ipv6.disable=1
    • /proc/sys/net/ipv6/ 目录必须存在。
    • 调用 socket(AF_INET6, SOCK_STREAM, IPPROTO_IP) 的 C 程序应成功,即系统调用必须返回一个 fd != -1 并且不会因 EAFNOSUPPORT 而失败。

确切的错误取决于该功能。 对于链接服务器,这表现为登录超时错误。 对于可用性组,辅助节点上的 ALTER AVAILABILITY GROUP JOIN DDL 将在 5 分钟后因 download configuration timeout 错误而失败。

要解决此问题,请执行以下操作之一:

  1. 使用 IP 而不是主机名来指定 TCP 连接的目标。

  2. 从引导命令行中删除 ipv6.disable=1,在内核中启用 IPv6。 执行此操作的方法取决于 Linux 发行版和引导加载程序,例如 grub。 如果希望禁用 IPv6,仍可通过在 sysctl 配置中设置 net.ipv6.conf.all.disable_ipv6 = 1 来禁用它(例如 /etc/sysctl.conf)。 这仍然会阻止系统的网络适配器获取 IPv6 地址,但允许 sqlservr 功能运行。

不支持 TLS 1.3

尽管适用于 Windows 的 SQL Server 2022 (16.x) 支持 TLS 1.3,但在 Linux 上必须使用 TLS 1.2。

网络文件系统 (NFS)

如果在生产中使用网络文件系统 (NFS) 远程共享,请注意以下支持要求:

  • 使用 NFS 版本 4.2 或更高版本。 较早版本的 NFS 不支持现代文件系统常用的必需功能,例如 fallocate 和稀疏文件创建。

  • 仅在 NFS 装载上查找 /var/opt/mssql 目录。 不支持其他文件,例如 SQL Server 系统二进制文件。

  • 安装远程共享时,请确保 NFS 客户端使用 nolock 选项。

本地化

  • 如果在安装过程中区域设置不是英语 (en_us),则必须在 bash 会话/终端中使用 UTF-8 编码。 如果使用 ASCII 编码,可能会看到类似于以下内容的错误:

    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 8: ordinal not in range(128)
    

    如果无法使用 UTF-8 编码,请使用 MSSQL_LCID 环境变量运行安装程序以指定语言选择。

    sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
    
  • 运行 mssql-conf setup 安装程序并执行 SQL Server 的非英语安装时,在本地化文本“配置 SQL Server...”之后会显示错误的扩展字符。 或者,对于非拉丁语的安装,句子可能完全丢失。 丢失的句子应显示以下本地化字符串:

    The licensing PID was successfully processed. The new edition is [<Name> edition].

    输出此字符串仅供参考,下一 SQL Server 累积更新将针对所有语言解决此问题。 这不会以任何方式影响 SQL Server 的成功安装。

并非所有筛选器都适用于此版本,包括 Microsoft Office 文档筛选器。 有关支持的筛选器列表,请参阅在 Linux 上安装 SQL Server 全文搜索

SQL Server Integration Services (SSIS)

此版本中的 SUSE 不支持 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 包时,此版本不支持以下功能:

  • Integration Services 目录数据库
  • SQL 代理计划的包执行
  • Windows 身份验证
  • 第三方组件
  • 变更数据捕获 (CDC)
  • Integration Services 横向扩展
  • 适用于 SSIS 的 Azure 功能包
  • Hadoop 和 HDFS 支持
  • Microsoft Connector for SAP BW

有关当前不受支持或提供有限支持的内置 SSIS 组件的列表,请参阅 Linux 上的 SSIS 的限制和已知问题

有关 Linux 上的 SSIS 的详细信息,请参阅以下文章:

SQL Server Management Studio (SSMS)

以下限制适用于 Windows 中连接到 Linux 上 SQL Server 的 SQL Server Management Studio。

  • 不支持维护计划。

  • 不支持管理数据仓库 (MDW) 和 SQL Server Management Studio 中的数据收集器。

  • 具有 Windows 身份验证或 Windows 事件日志选项的 SQL Server Management Studio UI 组件不适用于 Linux。 仍可通过其他选项(如 SQL 登录名)使用这些功能。

  • 不能修改要保留的日志文件数。

另请参阅

后续步骤