Microsoft SQL Server 2017 累积更新 3 (CU3) 也在 2018 年 1 月 3 日的 SQL Server 安全公告 ADV180002 中发布。 请参阅 KB 4058562 以了解更多相关信息。 换言之,相同的物理包 (SQLServer2017-KB4052987-x64.exe) 可同时用作 CU3 (KB 4052987) 和安全公告 (KB 4058562)。

因此,您可能已经将 CU3 作为安全发布的一部分进行安装。 如果您在 ADV180002 之后尝试安装 CU3,您可能会收到以下消息:

此计算机上没有可以更新的 SQL Server 实例或共享功能

这表明您已安装 CU3,无需进一步操作。

本文介绍了 Microsoft SQL Server 2017 的累积更新包 3 (CU3)。 此更新包含 SQL Server 2017 初始版本后发布的 修补 程序,并将 SQL Server 和 Analysis Services 组件更新为以下版本:

组件

Build 版本

文件版本

SQL Server

14.0.3015.40

2017.140.3015.40

Analysis Services

14.0.202.1

2017.140.202.1

重要说明

如果使用查询存储功能,并且以前已安装累积更新 2 (CU2) (14.0.3008.27),则在安装 CU3 (14.0.3015.40) 或更高版本后,必须立即执行以下脚本以删除安装 CU2 时查询存储收集的所有计划:

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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐