KB5008084 - 2017 SQL Server累积更新 28
Release Date:
2022/1/13
Version:
14.0.3430.2
摘要
本文介绍 Microsoft SQL Server 2017 的累积更新包 28 (CU28) 。 此更新包含在发布 SQL Server 2017 累积更新 27 后发布的 9 个修补程序,并将组件更新到以下版本。
-
SQL Server - 产品版本:14.0.3430.2,文件版本:2017.140.3430.2
-
Analysis Services - 产品版本: 14.0.249.87,文件版本: 2017.140.249.87
此更新的已知问题
此累积更新没有已知问题。
此累积更新中包含的改进和修复
可以使用可下载的 Excel 工作簿,其中包含生成摘要列表及其当前支持生命周期。 Excel 文件还包含 2019 SQL Server和 2017 SQL Server的详细修复列表。 单击此项可立即下载此 Excel 文件。
注意: 下表中的单个条目可以通过书签直接引用。 如果单击表中的任何 bug 引用 ID,将注意到使用此格式#bkmk_NNNNNNNN将书签标记添加到 URL。 然后,可以将此 URL 共享给其他人,以便他们可以直接跳转到表中所需的修补程序。
Bug 参考 |
知识库文章编号 |
说明 |
修复区域 |
Platform |
|
---|---|---|---|---|---|
修复了以下问题: sys.fn_hadr_backup_is_preferred_replica 在独立计算机或群集节点上运行时, (Cluster_Type=None) 返回读取缩放可用性组的次要副本上的不同结果 |
高可用性 |
Windows |
|||
修复了在 SSISDB 数据库中执行 internal.cleanup_server_log 存储过程时发生的以下错误: #MS_SSISServerCleanupJobLogin##。 名为“execution_cursor”的游标不存在。 [SQLSTATE 34000] (错误 16916) |
集成服务 |
Windows |
|||
当 STATE 为 3 (错误) 诊断 HADR 运行状况事件时,添加了在 AlwaysOn_health XEvent 会话中捕获 sp_server_diagnostics XEvent 的改进 |
SQL 引擎 |
Windows |
|||
修复了当许多 R 查询并行运行时,某些临时工作文件夹未清除的问题 |
SQL 引擎 |
Windows |
|||
修复了 Linux 上的默认跟踪在限制大小为 20 MB 之前滚动的问题 |
SQL 引擎 |
Linux |
|||
修复了在 2017 SQL Server安装的 ubuntu docker 容器上使用虚拟设备接口 (VDI) 备份数据库时发生的以下错误: Host_515697bb-6009-4018-b373-50c871ed736c_SQLVDIMemoryName_0:ClientBufferAreaManager::SyncWithGlobalTable:Open (hBufferMemory) :错误2Host_515697bb-6009-40 18-b373-50c871ed736c_SQLVDIMemoryName_0: TriggerAbort: invoked: error 0Host_515697bb-6009-4018-b373-50c871ed736c_SQLVDIMemoryName_0: TriggerAbort: ChannelSem: error 2Features returned by SQL Server: 0x10000 打开设备。 |
SQL 引擎 |
Linux |
|||
修复了SQL Server在会话引起注意并启用INTERLEAVED_EXECUTION_TVF时断开会话连接的问题 |
SQL 性能 |
Windows |
|||
修复了使用大型对象 (LOB 执行并发查询) 参数导致 tmpilb.cpp 中断言失败并生成小型转储的问题 |
SQL 性能 |
Windows |
|||
修复了以下问题:如果 USE PLAN 提示指定具有左外部联接和内部联接的查询计划,则查询处理器无法生成查询计划 |
SQL 性能 |
Windows |
如何获取或下载此或最新的累积更新包
注意: 在 2017 SQL Server发布将来的累积更新后,可以从 Microsoft 更新目录下载此和所有以前的 TU。 但是,我们建议始终安装可用的最新累积更新。
Microsoft 更新目录提供以下更新:
文件信息
可以通过以下命令计算 SQLServer2017-KB5008084-x64.exe 文件的哈希来验证下载:
certutil -hashfile SQLServer2017-KB5008084-x64.exe SHA256
File name |
SHA256 哈希 |
---|---|
SQLServer2017-KB5008084-x64.exe |
A0ED9F87E16F83E9E9767A80293E5727B784E82154FCED28D4DF2936133B5976 |
此程序包的英文版具有下表中列出的文件属性(或较新的文件属性)。 这些文件的日期和时间以协调世界时 (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 不作任何暗示保证或其他形式的保证。