Linux 上的 SQL Server 2017 的发行说明

适用于: SQL Server 2017 (14.x) - Linux

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

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

支持的平台

平台 文件系统 安装指南
Red Hat Enterprise Linux 7.7 - 7.9 或 8.0 - 8.6 Server XFS 或 EXT4 安装指南
SUSE Enterprise Linux Server v12 SP3 - SP5 XFS 或 EXT4 安装指南
Ubuntu 16.04 LTS 1、18.04 LTS XFS 或 EXT4 安装指南
Linux 上的 Docker 引擎 1.8+ 空值 安装指南

1 对 Ubuntu 16.04 上的 SQL Server 的支持有限。 2021 年 4 月底,Ubuntu 16.04 从长期支持 (LTS) 版本的标准五年期维护时段转换为扩展安全维护 (ESM) 支持。 有关详细信息,请参阅 Ubuntu 16.04 LTS 转换为扩展安全维护 (ESM) | Ubuntu

提示

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

工具

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

所有包的最新版本

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

版本 发布 Date 构建 知识库文章
SQL Server 2017 (14.x) CU 31 GDR 2023-02-14 14.0.3460.9 KB 5021126
  • 从 CU 4 开始,SQL Server 代理不再作为单独的包进行安装。 它与数据库引擎包一起安装,必须启用才能使用。
  • 此版本中的 SUSE 不支持 mssql-server-is 包。 有关详细信息,请参阅 SQL Server Integration Services (SSIS)
分发 包名称 包版本 下载
Red Hat Enterprise Linux
RHEL 8 数据库引擎 14.0.3460.9-3 数据库引擎 RPM 包
RHEL 8 全文搜索 14.0.3460.9-3 全文搜索 RPM 包
RHEL 8 高可用性 14.0.3460.9-3 高可用性 RPM 包
RHEL 7 SSIS 14.0.3015.40-1 SSIS RPM 包
SUSE Enterprise Linux Server
SLES 12 数据库引擎 14.0.3460.9-3 数据库引擎 RPM 包
SLES 12 全文搜索 14.0.3460.9-3 全文搜索 RPM 包
SLES 12 高可用性 14.0.3460.9-3 高可用性 RPM 包
Ubuntu
Ubuntu 18.04 数据库引擎 14.0.3460.9-3 数据库引擎 Debian 包
Ubuntu 18.04 全文搜索 14.0.3460.9-3 全文搜索 Debian 包
Ubuntu 18.04 高可用性 14.0.3460.9-3 高可用性 Debian 包
Ubuntu 16.04 SSIS 14.0.3015.40-1 SSIS Debian 包

如何安装更新

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

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

版本历史记录

下表列出了 SQL Server 2017 (14.x) 的版本历史记录。

发布 版本 发布日期
CU 31 GDR 14.0.3460.9 2023-02-14
CU 31 14.0.3456.2 2022-09-20
CU 30 14.0.3451.2 2022-07-13
CU 29 GDR 14.0.3445.2 2022-06-14
CU 29 14.0.3436.1 2022-03-30
CU 28 14.0.3430.2 2022-01-13
CU 27 14.0.3421.10 2021-10-27
CU 26 14.0.3411.3 2021-09-14
CU 25 14.0.3401.7 2021-07-12
CU 24 14.0.3391.2 2021-05-10
CU 23 14.0.3381.3 2021-02-24
CU 22 GDR 14.0.3370.1 2021-01-12
GDR 3 14.0.2037.2 2021-01-12
CU 22 14.0.3356.20 2020-09-10
CU 21 14.0.3335.7 2020-07-01
CU 20 14.0.3294.2 2020-04-10
CU 19 14.0.3281.6 2020-02-05
CU 18 14.0.3257.3 2019-12-09
CU 17 14.0.3238.1 2019-10-08
CU 16 14.0.3223.3 2019-08-01
CU 15 GDR 14.0.3192.2 2019-07-09
CU 15 14.0.3162.1 2019-05-23
CU 14 14.0.3076.1 2019-03-25
CU 13 14.0.3048.4 2018-12-18
CU 12 14.0.3045.24 2018-10-24
CU 11 14.0.3038.14 2018-09-20
CU 10 14.0.3037.1 2018-08-27
CU 9 GDR 14.0.3035.2 2018-08-18
GDR 2 14.0.2002.14 2018-08-18
CU 9 14.0.3030.27 2018-07-18
CU 8 14.0.3029.16 2018-06-21
CU 7 14.0.3026.27 2018-05-24
CU 6 14.0.3025.34 2018-04-19
CU 5 14.0.3023.8 2018-03-20
CU 4 14.0.3022.28 2018-02-20
CU 3 14.0.3015.40 2018-01-03
GDR 1 14.0.2000.63 2018-01-03
CU 2 14.0.3008.27 2017-11-28
CU 1 14.0.3006.16 2017-10-24
GA 14.0.1000.169 2017-10-02

已知问题

以下部分介绍了 Linux 上 SQL Server 2017 (14.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 登录名的语言。

数据库

  • 不能使用 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 连接(如链接服务器或可用性组)的功能可能不起作用:

  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 功能运行。

网络文件系统 (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 登录名)使用这些功能。

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

另请参阅

后续步骤