KB5006944 - 2017 SQL Server累积更新 27
Release Date:
2021/10/27
Version:
14.0.3421.10
摘要
本文介绍 2017 Microsoft SQL Server的累积更新包 27 (CU27) 。 此更新包含在发布 SQL Server 2017 累积更新 26 后发布的 12 个修补程序,并将组件更新到以下版本。
-
SQL Server - 产品版本:14.0.3421.10,文件版本:2017.140.3421.10
-
Analysis Services - 产品版本: 14.0.249.83,文件版本: 2017.140.249.83
此更新的已知问题
此累积更新没有已知问题。
此累积更新中包含的改进和修复
可下载Excel工作簿,其中包含生成摘要列表及其当前支持生命周期。 Excel文件还包含 2019 SQL Server和 2017 SQL Server的详细修复列表。 单击此Excel文件立即下载。
注意: 下表中的单个条目可以通过书签直接引用。 如果单击表中的任何 bug 引用 ID,将注意到使用此格式#bkmk_NNNNNNNN将书签标记添加到 URL。 然后,可以将此 URL 共享给其他人,以便他们可以直接跳转到表中所需的修补程序。
Bug 参考 |
知识库文章编号 |
说明 |
修复区域 |
Platform |
|
---|---|---|---|---|---|
5007158 |
SQL 引擎 |
全部 |
|||
5007039 |
SQL 引擎 |
Windows |
|||
5007381 |
修复:在 2017 SQL Server配置新的运行时并删除新的累积更新修补程序后,Sp_execute_external_script失败 |
SQL 引擎 |
Windows |
||
防止在 2019 SQL Server的溱锁超时期间触发内存转储 |
SQL 引擎 |
Windows |
|||
修复了以下问题:故障转移群集实例 (FCI) 在 2019 SQL Server标准版中 PolyBase 横向扩展组的辅助节点上安装失败。 下面是错误消息: Polybase 的指定横向扩展设置与为SQL Server故障转移群集中的活动节点指定的横向扩展设置不同。 若要继续,请为设置提供 False。 |
SQL 引擎 |
Windows |
|||
修复启用详细截断功能时某些查询发生的查询内死锁 |
SQL 引擎 |
Windows |
|||
修复了由于隐式转换而导致的失败断言,其中谓词的精度大于值: Msg 3624,级别 20,状态 1, LineNumber 系统断言检查失败。 有关详细信息,请查看SQL Server错误日志。 通常,断言失败是由软件 bug 或数据损坏引起的。 若要检查数据库损坏情况,请考虑运行 DBCC CHECKDB。 如果同意在安装过程中向 Microsoft 发送转储,则会向 Microsoft 发送一个小型转储。 Microsoft 可能在最新 Service Pack 或 Technical Support 的修补程序中提供更新。 Msg 596,级别 21,状态 1, Line LineNumber 无法继续执行,因为会话处于终止状态。 Msg 0,级别 20,状态 0, LineNumber 当前命令出现严重错误。 应丢弃结果(如果有)。 |
SQL 引擎 |
Windows |
|||
修复了以下问题:当服务器名称与主机名不匹配时,sys.servers 中的名称条目不正确可能导致Always On可用性组 (AG Windows) 副本被删除 |
高可用性 |
Windows |
|||
修复了将默认数据目录设置为Azure Blob 存储 URL 时,累积更新 (CU) 修补失败并出现以下消息的问题: 不支持给定路径的格式。 异常类型“System.NotSupportedException” 备注 若要解决此问题,可以将数据默认目录更改为本地目录,并重新运行SQL修补程序。 |
安装&安装 |
Windows |
|||
修复了在累积更新升级和降级期间 , Alwayson_health会话中未自动更改扩展事件版本的问题 |
高可用性 |
Windows |
|||
修复了以下问题:sp_pkeys KEY_SEQ列的输出不符合主键中定义的列的排序 |
SQL 引擎 |
Windows |
|||
修复了执行 sp_server_diagnostics 时可能发生的访问冲突异常 |
高可用性 |
Windows |
如何获取或下载此或最新的累积更新包
注意: 在 2017 SQL Server发布将来的累积更新后,可以从 Microsoft 更新目录下载此和所有以前的 TU。 但是,我们建议始终安装可用的最新累积更新。
Microsoft 更新目录提供以下更新:
文件信息
可以通过以下命令计算 SQLServer2017-KB5006944-x64.exe 文件的哈希来验证下载:
certutil -hashfile SQLServer2017-KB5006944-x64.exe SHA256
File name |
SHA256 哈希 |
---|---|
SQLServer2017-KB5006944-x64.exe |
CCFA4DC8C7D39B2C3BC5F97067C8C57E72D7F9180AD5AABCC0B5D86E41513E66 |
此包的英语版本具有下表中列出的文件属性 (或更高版本的文件属性) 。 这些文件的日期和时间按协调世界时 (UTC) 列出。 在查看文件信息时,文件时间将转换为本地时间。 要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”项中的“时区”选项卡。
基于 x64 的版本
SQL Server 2017 Analysis Services
SQL Server 2017 Database Services Common Core
SQL Server 2017 Data Quality Client
SQL Server 2017 年数据质量
SQL Server 2017 sql_dreplay_client
SQL Server 2017 sql_dreplay_controller
SQL Server 2017 Database Services Core Instance
SQL Server 2017 Database Services Core Shared
SQL Server 2017 sql_extensibility
SQL Server 2017 全文引擎
SQL Server 2017 sql_inst_mr
SQL Server 2017 Integration Services
SQL Server 2017 sql_polybase_core_inst
SQL Server 2017 sql_shared_mr
SQL Server 2017 sql_tools_extensions
|
此更新注意事项
若要应用此累积更新包,必须在 2017 SQL Server运行。
应用此累积更新包后,可能需要重新启动计算机。
要使用此程序包中的某个修补程序,不必对注册表进行任何更改。
本文还提供了有关以下情况的重要信息:
-
Pacemaker :在使用 Pacemaker 最新可用版本的发行版中进行了行为更改。 提供缓解方法。
-
查询存储 :如果使用查询存储并且之前已安装Microsoft SQL Server 2017 累积更新 2 (CU2) ,则必须运行此脚本。
Analysis Services CU 生成版本
从 2017 SQL Server开始,Analysis Services 生成版本号和SQL Server 数据库引擎生成版本号不匹配。 有关详细信息,请参阅 验证 Analysis Services 累积更新生成版本。
CU) (累积更新
累积更新 (CU) 现在可从 Microsoft 下载中心下载。
下载中心仅提供针对 2017 SQL Server发布的最新 CU。
适用于 Linux 的 CU 包在 https://packages.microsoft.com/ 中可用。
注意
-
每个最新累积更新都包含 SQL Server 已安装版本的之前累积更新。
-
SQL Server 累积更新的认证级别与 Service Pack 相同,您可以放心安装。
-
建议根据以下准则持续主动安装 CUS:
-
历史数据表明,很多支持案例都涉及已发布累积更新中已解决的问题。
-
累积更新包含的附加价值可能高于修补程序。 包括支持能力、可管理性和可靠性更新。
-
-
建议您在将累积更新部署到生产环境之前对其进行测试。
重要说明
所有分发 (包括 RHEL 7.3 和 7.4) (使用最新可用 Pacemaker 包 1.1.18-11.el7)的分发版,如果其值为 false,则会对启动失败-是致命群集设置进行行为更改。 此更改会影响故障转移工作流。 如果主副本发生中断,则群集应故障转移到可用的辅助副本之一。 相反,用户会注意到群集不断尝试启动失败的主副本。 如果由于永久性中断) ,该主副本从未联机 (,则群集永远不会故障转移到另一个可用的辅助副本。
此问题会影响所有SQL Server版本,而不考虑它们所使用的累积更新版本。
若要缓解此问题,请使用以下任一方法。
方法 1
请按照下列步骤操作:
-
从现有群集中删除 启动失败-是-致命 重写。
# RHEL、Ubuntu pcs 属性 unset start-failure-is-fatal # 或 pcs property set start-failure-is-fatal=true # SLES crm configure property start-failure-is-fatal=true -
减少 群集-重新检查间隔 值。
# RHEL, Ubuntu pcs 属性 set cluster-recheck-interval=<Xmin> # SLES crm configure property cluster-recheck-interval=<Xmin> -
将 故障超时 元属性添加到每个 AG 资源。
# RHEL, Ubuntu pcs resource update ag1 meta failure-timeout=60s # SLES crm configure edit ag1 # 在文本编辑器中,在任何“param”和任何“op”之前添加“meta failure-timeout=60s”备注 在此代码中,请根据需要替换<Xmin>的值。 如果副本发生故障,群集将尝试按受 故障超时 值和 群集重新检查间隔 值绑定的间隔重新启动副本。 例如,如果 故障超时 设置为 60 秒, 并且群集重新检查间隔 设置为 120 秒,则以大于 60 秒但小于 120 秒的时间间隔尝试重启。 建议将 故障超时 设置为 60 秒 ,将 群集重新检查间隔 设置为大于 60 秒的值。 建议不要将 群集重新检查间隔 设置为小值。 有关详细信息,请参阅 Pacemaker 文档或咨询系统提供程序。
方法 2
还原到 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
END;
PRINT ''- Cleared possibly affected plans in database [' + @userDB + ']''
END
ELSE
BEGIN
PRINT ''- No affected plans in database [' + @userDB + ']''
END
END
ELSE
BEGIN
PRINT ''- Query Store not enabled in database [' + @userDB + ']''
END')
UPDATE #tmpUserDBs
SET [IsDone] = 1
WHERE [database_id] = DB_ID(@userDB)
END
将更新部署到混合环境 ((如 AlwaysOn、复制、群集和镜像) )时,建议在部署更新之前参考以下文章:
-
SQL Server故障转移群集滚动更新和服务包过程
注意 如果不想使用滚动更新过程,请按照以下步骤应用更新:-
在被动节点上安装更新。
-
在活动节点上安装更新 (需要) 重新启动服务。
-
-
升级和更新使用最短停机时间和数据丢失
的可用性组服务器注意如果使用 SSISDB 目录启用了 AlwaysOn,请参阅有关使用 AlwaysOn 的 SSIS 的信息,了解有关如何在这些环境中应用更新的详细信息。
SQL Server 累积更新目前提供多语言版本。 因此,此累积更新不仅仅特定于一种语言。 它适用于所有支持语言。
一个累积更新包包括 ALL SQL Server 2017 组件的所有可用更新 (功能) 。 但是,累积更新包仅更新当前安装在要服务的SQL Server实例上的组件。 例如,如果 (SQL Server功能,则应用此 CU 后,Analysis Services) 将添加到实例,则必须重新应用此 CU 才能将新功能更新到此 CU。
如果出现其他问题或需要进行任何故障排除,则可能需要创建服务请求。 通常的支持成本将适用于其他支持问题和不符合此特定累积更新包条件的问题。 有关 Microsoft 客户服务和支持人员电话号码的完整列表,或要创建单独的服务请求,请转到 Microsoft 支持网站。
如何卸载此更新
-
在控制面板中,打开“程序和功能”项,然后选择“查看已安装的更新”。
-
在 SQL Server 2017 下找到与此累积更新包对应的条目。
-
按住(或右键单击)该条目,然后选择“卸载”。
若要在 Linux 上卸载此 CU,必须将包回滚到以前的版本。
有关如何回滚安装的详细信息,请参阅回滚SQL Server。
第三方信息免责声明
本文中讨论的第三方产品由 Microsoft 以外的其他公司提供。 对于这些产品的性能或可靠性,Microsoft 不作任何暗示保证或其他形式的保证。