Cumulative Update 5 for SQL Server 2017

Applies to: SQL Server 2017 on Linux (all editions)SQL Server 2017 on Windows (all editions)

This article describes Cumulative Update package 5 (CU5) for SQL Server 2017. This update contains fixes that were released after the initial release of SQL Server 2017 and updates the SQL Server and Analysis services components to the following builds:

Component Build version File version
SQL Server 14.0.3023.8 2017.140.3023.8
Analysis Services 2017.140.204.1

Cumulative update

Cumulative updates (CU) are now available at the Microsoft Download Center.

Only the most recent CU that was released for SQL Server 2017 is available at the Download Center.

CU packages for Linux are available at


  • Each new CU contains all the fixes that were included in the previous CU for the installed version of SQL Server.
  • SQL Server CUs are certified to the same levels as Service Packs, and should be installed at the same level of confidence.
  • Microsoft recommends ongoing, proactive installation of CUs as they become available:

    • Historical data shows that a significant number of support cases involve an issue that has already been addressed in a released CU.
    • CUs may contain added value over and above hotfixes. This includes supportability, manageability, and reliability updates.
  • We recommend that you test CUs before you deploy them to production environments.

How to obtain this cumulative update package for Windows

The following update is available from the Microsoft Download Center:
If the download page does not appear, contact Microsoft Customer Service and Support to obtain the cumulative update package.

Note After future cumulative updates are released for SQL Server 2017, this and all previous CUs can be located and downloaded from the Microsoft Update Catalog. However, Microsoft recommends that you always install the latest cumulative update available.

How to obtain this cumulative update package for Linux

To update Linux to the latest CU, you must first have the Cumulative Update repository configured. Then, update your SQL Server packages by using the appropriate platform-specific update command.

For installation instructions and direct links to the CU package downloads, see the Release notes.

Additional hotfixes that are included in this cumulative update package

VSTS bug number KB article number Description Fix area Platform
11561331 4089946 FIX: SQL Server stops responding when you remove the availability group listener or change their port number High Availability All
11447604 4038881 FIX: Unexpected exception occurs when you process dimensions by using Process Update in SSAS 2016 or SSAS 2017 Analysis Services Windows
11469023 4088270 FIX: Very large PAGELATCH_EX contentions occur when you drop temporary objects in SQL Server SQL Engine Windows
11542851 4089473 Better intra-query parallelism deadlocks troubleshooting in SQL Server 2017 SQL performance All
11569058 4090789 FIX: In-Memory OLTP database takes a long time to recover in SQL Server 2017 SQL Engine All
11591383 4091245 FIX: Access violation occurs when you query a table with an integer column in SQL Server 2017 SQL performance Windows
11569472 4089948 FIX: Intra-query deadlock when values are inserted into a partitioned clustered columnstore index in SQL Server 2016 or 2017 SQL Engine All
11677397 4091722 FIX: Pacemaker promotes an unsynchronized replica to primary when you use AlwaysOn AG in SQL Server 2017 on Linux High Availability Linux
11505194 4055674 FIX: Missing logs for Analysis Services Processing tasks in SQL Server 2016 and 2017 Integration Services Analysis Services Windows
11632824 4091063 FIX: Access violation occurs when Query Store collects runtime statistics in SQL Server 2017 SQL Engine All
11686345 4092667 FIX: Errors 1921 and 1750 when you create a node or edge table in database that has binary collation in SQL Server 2017 SQL performance All
11578523 4089718 Improvement: Performance issue when upgrading MDS from SQL Server 2012 to 2016 Data Quality Services (DQS) All
11705681 4093805 FIX: Cannot stop the SQL Server Linux Docker container by using the “docker stop” command SQL Engine Linux
11455785 4058174 FIX: Heavy tempdb contention occurs in SQL Server 2016 or 2017 SQL Engine Windows
11301460 4058700 FIX: Intermittent 9004 error when a backup is restored via Standby Mode in SQL Server 2014, 2016, and 2017 SQL Engine All
11552950 4092066 FIX: Replication not enabled when database collation uses '_SC' collation extension in SQL Server 2016 SQL Engine Windows
11516257 4087406 FIX: Error 9002 when there is no sufficient disk space for critical log growth in SQL Server 2014, 2016, and 2017 SQL Engine All
11789381 4089276 Improves the query performance when an optimized bitmap filter is applied to a query plan in SQL Server 2016 and 2017 SQL performance All

Notes for this update

Hybrid environments deployment

When you deploy an update to a hybrid environment (such as AlwaysOn, replication, cluster, and mirroring), we recommend that you refer to the following articles before you deploy the update:

Cumulative Update package information


To apply this cumulative update package, you must be running SQL Server 2017.

Restart information

You may have to restart the computer after you apply this cumulative update package.

Registry information

To use one of the hotfixes in this package, you do not have to make any changes to the registry.

Query Store notice


You must run this script if you use Query Store and you are updating from SQL Server 2017 Cumulative Update 2 (CU2) directly to SQL Server 2017 Cumulative Update 3 (CU3) or any later Cumulative Update. Executing this script is not needed if you have previously installed SQL Server 2017 Cumulative Update 3 (CU3) or any later SQL Server 2017 Cumulative Update.

SET NOCOUNT ON;DROP TABLE IF EXISTS #tmpUserDBs;SELECT [database_id], 0 AS [IsDone]INTO #tmpUserDBsFROM master.sys.databasesWHERE [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) > 0BEGIN 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 + ']'' ENDENDELSEBEGIN PRINT ''- Query Store not enabled in database [' + @userDB + ']''END')  UPDATE #tmpUserDBs  SET [IsDone] = 1  WHERE [database_id] = DB_ID(@userDB)END