添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
版本: 14.0.3356.20

本文介绍适用于 Microsoft SQL Server 2017 的累积更新包 22 (CU22) 。 此更新包含 SQL Server 2017 累积更新 21 发布后发布的 41 个 修补程序 ,并更新以下版本中的组件:

  • SQL Server - 产品版本: 14.0.3356.20 ,文件版本: 2017.140.3356.20
  • Analysis Services - 产品版本: 14.0.249.54 ,文件版本: 2017.140.249.54
  • 此更新中的已知问题

    此累积更新没有已知问题。

    此更新中包含的改进和修复

    提供包含生成摘要列表及其当前支持生命周期的可下载 Excel 工作簿。 Excel 文件还包含适用于 SQL Server 2019 和 SQL Server 2017 的详细修补程序列表。 选择立即下载此 Excel 文件

    可以直接通过书签引用下表中的单个条目。 如果选择表中的任何 bug 引用 ID,则会使用“#NNNNNNNN”格式将书签标记添加到 URL。 然后,你可以与其他人共享此 URL,以便他们可以直接跳转到表中所需的修补程序。

    有关此服务更新中已修复的 bug 和增强功能的详细信息,请参阅以下 Microsoft 知识库文章。

    Bug 参考 13594343 修复了使用 DirectQuery 模式针对多维实例运行查询时出现意外错误的问题。 意外错误 (文件“FileName”、line LineNumber、FunctionName :: start 函数) Analysis Services Analysis Services Windows 13636106 修复了在 SSAS 2017 中对 DirectQuery 模型透视运行 DISCOVER_CSDL_METADATA 时发生的错误。 “OLE DB 或 ODBC 错误:很抱歉,评估期间发生错误。” Analysis Services Analysis Services Windows 13641471 修复了启用跟踪或探查器获取 DAX 查询计划时 SSAS 2017 中函数 XLVariable::WriteVarInfo 上发生的意外异常。 Analysis Services Analysis Services Windows 13598902 修复了数据库包含数万个表且 db 用户未 db_owner 时涉及 TransferSqlServerObjectsTask 类型的 SSIS 任务的长时间包执行时间。 Tasks_Components Windows 13598930 修复:对具有列存储索引的表进行并发插入可能会导致查询在 KB4561305 SQL Server () 停止响应 SQL Server引擎 13586252 修复:在 SQL Server 2017 中对克隆的数据库运行 DBCC CHECKDB 时发生错误 8992 (KB4578110) SQL Server引擎 数据库管理 Windows 13573410 修复:在具有 sp_execute_external_script SQL SERVER 2017 SQL Server IDENTITY 列的表中运行 INSERT EXEC 时发生访问冲突 (KB4578887) SQL Server引擎 13575424 修复:将包含显式标识值的行插入到具有 IDENTITY 列的表中时,INSERT EXEC 不起作用,IDENTITY_INSERT SQL Server (KB4568653) SQL Server引擎 13637079 修复:应用 SQL Server 2017 CU21 (KB4578012) 后,无法在 Windows Server 2012 或 Windows 8 上使用文件流 SQL Server引擎 FileStream 和 FileTable Windows 13598898 在 FileTable 目录中并发创建子目录时,SQL Server引擎内部可能会出现死锁,并且对 FileTable 目录和文件的所有后续请求可能不会响应。 SQL Server引擎 FileStream 和 FileTable Windows 13477413 修复:在连接到 SQL Server 2017 时发生间歇性可用性组故障转移, (KB4569424) SQL Server引擎 高可用性和灾难恢复 Linux 13525230 修复:在某些情况下,在 2017 SQL Server可用性组中发生访问冲突异常 (KB4577932) SQL Server引擎 高可用性和灾难恢复 Windows 13477335 当 Pacemaker 代理无法连接到SQL Server资源以获取运行状况状态时,此更新会将详细的错误信息添加到 pacemaker 日志。 SQL Server引擎 高可用性和灾难恢复 Linux 13598932 重做进程命中期间,镜像服务器上出现断言错误。 断言:文件: <FilePath\FileName>,line = <LineNumber> Failed 断言 = 'result == LCK_OK' SQL Server引擎 高可用性和灾难恢复 Windows 13587856 修复:在 2017 SQL Server 中更改或删除 LOB 或行外列时,LOB 分配器可能会泄露 (KB4336873) SQL Server引擎 In-Memory OLTP 13249811 修复:2017 SQL Server DST 时区的 UTC 时间报告不正确, (KB4579966) SQL Server引擎 Linux Linux 13530877 修复:应用 SQL Server 2017 CU19/CU20/CU21 (KB4563007) SQL Server引擎 Linux Linux 13605758 修复:在 Linux 上的 SQL Server 2017 实例上运行 分发代理 时出错, (KB4573172) SQL Server引擎 Linux Linux 13585164 修复:在 KB4469942 SQL Server (中运行“sp_cycle_agent_errorlog”存储过程时发生共享冲突) SQL Server引擎 Windows 13622776 修复:当 SQL 代理系统作业在 2017 SQL Server 更改为“sa”以外的其他名称时,托管备份不会备份数据库 (KB4578008) SQL Server引擎 Windows 13598906 运行 ALTER 包含 ROLLBACK IMMEDIATE 选项的命令时,即使由于缺少权限而导致自身失败, ALTER 回滚也可能在处理命令之前触发。 此修复可确保仅在 ALTER 命令完成后处理回滚。 SQL Server引擎 Windows 13636126 修复:启用远程管理员连接并在主机上禁用 IPV6 时,SQL Server无法启动, (KB4575453) SQL Server连接 Linux 13598936 修复了运行引用SQL Server中不存在分区函数的查询时发生的访问冲突异常。 SQL Server引擎 Windows 13560722 修复:在 2017 SQL Server 2017 (KB4575689) 的远程服务器上运行包含聚合或联接的链接服务器查询时,可能会出现不正确的结果 SQL Server引擎 查询优化器 Windows 13606604 修复:在 2017 SQL Server (KB4577976) 中执行多个并发存储过程时发生编译阻塞 SQL Server引擎 查询优化器 Windows 13606668 修复:对前导表直方图边界外的键值进行级联删除会导致 2017 SQL Server 2017 (KB4577933) SQL Server引擎 查询优化器 Windows 13598882 运行具有大量表达式的查询时,将发生非生成计划程序错误。 SQL Server引擎 查询优化器 Windows 13598912 运行 from CONSTITUENT 表时 DELETE 发生错误,即使引用的表中不存在匹配的行也是如此。 消息 547,级别 16,状态 0,行编号 DELETE 语句与 REFERENCE 约束“约束名称”冲突。冲突发生在数据库“DatabaseName”、表“TableName”、列“ColumnName”中。 该语句已终止。 SQL Server引擎 查询优化器 Windows 13658971 查询存储临时工作负载的可伸缩性改进。 查询存储现在对其可以使用的内存量施加内部限制,并自动将操作模式 READ-ONLY 更改为 ,直到将足够的内存返回到数据库引擎,从而防止性能问题。 SQL Server引擎 13598910 修复:如果在 SQL Server (KB4563115) 中使用Always On 高可用性组作为辅助副本 (replica) ,升级脚本将失败 SQL Server引擎 Windows 13598904 发生死锁等复制错误时,随机 ID 插入MSRepl_Errors表中,而该 ID 应仅从以前的 id 值递增 1。 此累积更新 (CU) 修复了此问题,MSRepl_Errors将插入行 ID 递增 1 的条目,而不是使用一些随机值。 SQL Server引擎 Windows 13600268 在故障转移托管分发数据库的可用性组进行事务复制后,当作业在新的辅助副本 (replica) 上运行时,会出现“监视和同步复制代理作业”错误。 无法向 SQLServerAgent 发布通知 (原因:已超出挂起 SQLServerAgent 通知的最大数目。通知将被忽略。) [SQLSTATE 42000] (错误 22022) 。 步骤失败。 SQL Server引擎 Windows 13598908 修复:SQL Server (KB4511771) 中的 AG 脱机时,Full-Text 搜索自动爬网停止 SQL Server引擎 Windows 13663198 使用 TOP <param> or OFFSET <param1> ROWS FETCH NEXT <param2> ROWS ONLY 子句和并行计划运行空间查询时发生间歇性错误 6552。 SQL Server引擎 13624029 SQL Server AG 帮助程序/AG 监视应用程序等待 epoll 和 futex_wait_queue_me 等待类型超过 30 秒,无法连接到 2017 SQL Server,从而导致超时和故障转移。 SQL Server引擎 SQL OS Linux 12671877 修复:在 SQL Server 2017 (KB4486936) 中使用 SQL 登录帐户运行维护计划时,出现“用户登录失败”错误 SQL Server 客户端工具 Windows 13509282 修复:无法从以 4K 块大小 (KB4578011) 分区的 NVMe 设备上的以前版本还原SQL Server数据库 SQL Server引擎 Linux 13598884 DBCC CHECKDB 如果基表具有名为 ID 的列,则空间索引上可能会错误地报告损坏。 SQL Server引擎 Windows 13598924 重做进程命中期间,镜像服务器上出现断言错误。 断言:文件: <FilePath\FileName>,line = <LineNumber> Failed 断言 = 'result == LCK_OK' SQL Server引擎 Windows 13619763 DBCC SHRINKFLE SHRINKDATABASE 在针对数据库或包含系统版本控制的时态表的文件执行时,可能会导致断言异常错误。 SQL Server引擎 Windows 13598926 修复:分布式事务可能会遇到长时间等待,SQL Server (KB4560183) DTC_STATE等待类型 SQL Server引擎 Windows

    如何获取或下载此或最新的累积更新包

    如何获取或下载 Windows 的最新累积更新包 (建议)

    以下更新可从 Microsoft 下载中心获取:

  • 立即下载 SQL Server 2017 的最新累积更新包
  • 如果未显示下载页,请联系 Microsoft 客户服务和支持部门 以获取累积更新包。

  • Microsoft 下载中心将始终提供最新的 SQL Server 2017 CU 版本。
  • 如果未显示下载页,请联系 Microsoft 客户服务和支持部门 获取累积更新包。
  • 如何从 Microsoft 更新目录获取或下载适用于 Windows 的此累积更新包

    发布 SQL Server 2017 年的未来累积更新后,可以从 Microsoft 更新目录 下载此和所有以前的库。 但是,建议始终安装可用的最新累积更新。

    Microsoft 更新目录中提供了以下更新:

  • 立即下载 SQL Server 2017 CU22 的累积更新包
  • 如何获取或下载适用于 Linux 的最新累积更新包

    若要将 Linux 上的 SQL Server 2017 更新为最新的 CU,必须先 配置累积更新存储库 。 然后,使用特定于平台的相应更新命令更新SQL Server包。

    有关安装说明和 CU 包下载的直接链接,请参阅 SQL Server 2017 发行说明

    文件哈希信息

    可以通过以下命令计算 SQLServer2017-KB4577467-x64.exe 文件的哈希来验证下载:

    certutil -hashfile SQLServer2017-KB4577467-x64.exe SHA256

    SHA256 哈希
    累积更新包文件信息

    此包的英文版具有下表中列出的文件属性 (或更高版本的文件属性) 。 协调世界时 (UTC) 中列出了这些文件的日期和时间。 查看文件信息时,会将其转换为本地时间。 若要查找 UTC 与本地时间的差值,请使用 控制面板 中的 “日期和时间 ”项中的“ 时区 ”选项卡。

    基于 x64 的版本

    SQL Server 2017 Analysis Services

  • Pacemaker:在使用 Pacemaker 最新可用版本的发行版中进行了行为更改。 提供了缓解方法。

  • 查询存储 :如果使用 查询存储并且以前安装了 Microsoft SQL Server 2017 累积更新 2 (CU2) ,则必须运行此脚本。

    Analysis Services CU 内部版本

    从 Microsoft SQL Server 2017 开始,Analysis Services 内部版本号和SQL Server数据库引擎内部版本号不匹配。 有关详细信息,请参阅 验证 Analysis Services 累积更新版本

    CU) 累积更新 (

    (CU) 累积更新现已在 Microsoft 下载中心提供。

    下载中心仅提供了针对 2017 SQL Server 发布的最新 CU。

    适用于 Linux 的 CU 包在 中可用 https://packages.microsoft.com/

  • 每个新 CU 都包含已安装版本 SQL Server 的上一个 CU 中包含的所有修补程序。
  • SQL Server库的认证级别与 Service Pack 相同,并且应以相同的置信度级别安装。
  • 建议根据以下准则持续主动安装 CU: - 历史数据显示,大量支持案例涉及已发布 CU 中已解决的问题。 - 库可能包含高于和更高修补程序的附加价值。 这包括可支持性、可管理性和可靠性更新。
  • 建议先测试SQL Server OU,然后再将其部署到生产环境。
  • Pacemaker 通知

    使用最新可用 Pacemaker 包 1.1.18-11.el7 的所有分发 (包括 RHEL 7.3 和 7.4) ,如果群集设置的值为 false ,则会引入 start-failure-is-fatal 行为更改。 此更改会影响故障转移工作流。 如果主副本 (replica) 遇到中断,群集应故障转移到可用的辅助副本之一。 相反,用户会注意到群集会一直尝试启动失败的主副本 (replica) 。 如果由于永久中断) 而使该主数据库从未联机 (,则群集永远不会故障转移到另一个可用的辅助副本 (replica) 。

    此问题会影响所有SQL Server版本,而不管其使用的累积更新版本如何。

    若要缓解此问题,请使用以下方法之一。

    请按照下列步骤操作:

  • start-failure-is-fatal 从现有群集中删除替代。

    # RHEL, Ubuntu pcs 属性 unset start-failure-is-fatal # 或 pcs 属性 set start-failure-is-fatal=true # SLES crm configure 属性 start-failure-is-fatal=true

  • cluster-recheck-interval 减小值。

    # RHEL, Ubuntu pcs 属性集 cluster-recheck-interval=<Xmin> # SLES crm configure property cluster-recheck-interval=<Xmin>

  • failure-timeout 元属性添加到每个 AG 资源。

    # RHEL, Ubuntu pcs 资源更新 ag1 meta failure-timeout=60s # SLES crm configure edit ag1 # 在文本编辑器中,添加“meta failure-timeout=60s”在任何“param”之后和任何'op's 之前

    在此代码中,根据需要将 值替换为 <Xmin> 。 如果副本 (replica) 关闭,群集会尝试按值和 cluster-recheck-interval 值绑定 failure-timeout 的间隔重启副本 (replica) 。 例如,如果 failure-timeout 设置为 60 秒且 cluster-recheck-interval 设置为 120 秒,则尝试重启的间隔大于 60 秒但小于 120 秒。 建议将 设置为 60s ,并将 cluster-recheck-interval 设置为 failure-timeout 大于 60 秒的值。 建议不要将 设置为 cluster-recheck-interval 较小的值。 有关详细信息,请参阅 Pacemaker 文档或咨询系统提供商。

    还原到 Pacemaker 版本 1.1.16。

  • 查询存储通知

    如果使用 查询存储 并且从 SQL Server 2017 累积更新 2 (CU2) 直接更新到 SQL Server 2017 累积更新 3 (CU3) 或更高版本的累积更新,则必须运行此脚本。 如果以前安装了 SQL Server 2017 累积更新 3 (CU3) 或任何更新SQL Server 2017 累积更新,则无需运行此脚本。

    SET NOCOUNT ON;
    DROP TABLE IF EXISTS #tmpUserDBs;
    SELECT [database_id], 0 AS [IsDone]
    INTO #tmpUserDBs
    FROM master.sys.databases
    WHERE [database_id] > 4
     AND [state] = 0 -- must be ONLINE
     AND is_read_only = 0 -- cannot be READ_ONLY
     AND [database_id] NOT IN (SELECT dr.database_id FROM sys.dm_hadr_database_replica_states dr -- Except all local Always On secondary replicas
      INNER JOIN sys.dm_hadr_availability_replica_states rs ON dr.group_id = rs.group_id
      INNER JOIN sys.databases d ON dr.database_id = d.database_id
      WHERE rs.role = 2 -- Is Secondary
       AND dr.is_local = 1
       AND rs.is_local = 1)
    DECLARE @userDB sysname;
    WHILE (SELECT COUNT([database_id]) FROM #tmpUserDBs WHERE [IsDone] = 0) > 0
    BEGIN
     SELECT TOP 1 @userDB = DB_NAME([database_id]) FROM #tmpUserDBs WHERE [IsDone] = 0
     -- PRINT 'Working on database ' + @userDB
     EXEC ('USE [' + @userDB + '];
    DECLARE @clearPlan bigint, @clearQry bigint;
    IF EXISTS (SELECT [actual_state] FROM sys.database_query_store_options WHERE [actual_state] IN (1,2))
    BEGIN
     IF EXISTS (SELECT plan_id FROM sys.query_store_plan WHERE engine_version = ''14.0.3008.27'')
     BEGIN
      DROP TABLE IF EXISTS #tmpclearPlans;
      SELECT plan_id, query_id, 0 AS [IsDone]
      INTO #tmpclearPlans
      FROM sys.query_store_plan WHERE engine_version = ''14.0.3008.27''
      WHILE (SELECT COUNT(plan_id) FROM #tmpclearPlans WHERE [IsDone] = 0) > 0
      BEGIN
       SELECT TOP 1 @clearPlan = plan_id, @clearQry = query_id FROM #tmpclearPlans WHERE [IsDone] = 0
       EXECUTE sys.sp_query_store_unforce_plan @clearQry, @clearPlan;
       EXECUTE sys.sp_query_store_remove_plan @clearPlan;
       UPDATE #tmpclearPlans
       SET [IsDone] = 1
       WHERE plan_id = @clearPlan AND query_id = @clearQry
      PRINT ''- Cleared possibly affected plans in database [' + @userDB + ']''
     BEGIN
      PRINT ''- No affected plans in database [' + @userDB + ']''
    BEGIN
     PRINT ''- Query Store not enabled in database [' + @userDB + ']''
    END')
      UPDATE #tmpUserDBs
      SET [IsDone] = 1
      WHERE [database_id] = DB_ID(@userDB)
    
    混合环境部署

    将更新部署到混合环境 ((例如Always On、复制、群集和镜像) )时,建议在部署更新之前参考以下文章:

  • 升级故障转移群集实例
  • 如果不想使用滚动更新过程,请执行以下步骤来应用更新:

  • 在被动节点上安装更新。
  • 在活动节点上安装更新 (需要服务重启) 。
  • 升级和更新使用最短停机时间和数据丢失的可用性组服务器
  • 如果与 SSISDB 目录一起启用了Always On,请参阅 有关 SSIS 的信息,并Always On 有关如何在这些环境中应用更新的信息。

  • 如何在事务复制和数据库镜像拓扑中为SQL Server应用修补程序
  • 如何在复制拓扑中为SQL Server应用修补程序
  • 升级镜像实例
  • SQL Server服务安装概述
  • SQL Server库当前是多语言的。 因此,此 CU 包不特定于一种语言。 它适用于所有支持的语言。

    组件 (功能) 更新

    一个 CU 包包括所有 SQL Server 2017 组件 (功能) 的所有可用更新。 但是,累积更新包仅更新当前安装在选择要提供服务的 SQL Server 实例上的那些组件。 例如,如果SQL Server功能 (Analysis Services) 在应用此 CU 后添加到实例,则必须重新应用此 CU 才能将新功能更新到此 CU。

    对此更新的支持

    如果发生其他问题或需要进行任何故障排除,则可能需要创建服务请求。 通常的支持成本适用于其他支持问题和不符合此特定累积更新包条件的问题。 有关 Microsoft 客户服务和支持电话号码的完整列表,或者要创建单独的服务请求,请转到 Microsoft 支持网站

    如何卸载此更新

    如何在 Windows 上卸载此更新
  • 在控制面板中,打开 “程序和功能” 项,然后选择“ 查看已安装的更新 ”。
  • “SQL Server 2017 ”下找到与此累积更新包对应的条目。
  • 长按 (或右键单击条目) ,然后选择“ 卸载 ”。
  • 如何在 Linux 上卸载此更新

    若要在 Linux 上卸载此 CU,必须将包回滚到以前的版本。 有关如何回滚安装的详细信息,请参阅 回滚SQL Server

    第三方信息免责声明

    本文中讨论的第三方产品由 Microsoft 以外的其他公司提供。 对于这些产品的性能或可靠性,Microsoft 不作任何暗示保证或其他形式的保证。

    References

  • 宣布更新SQL Server增量服务模型 (ISM)
  • 从 2017 SQL Server 开始,不再支持SQL Server Service Pack
  • 确定所运行的 SQL Server 数据库引擎的版本
  • SQL Server的服务模型
  • SQL Server 软件更新包的命名方案和修复区域说明
  • 用于描述 Microsoft 软件更新标准术语的说明
  •