SQL Server 2017: Cumulative Update 10 (KB4342123) Now Available

Table of Contents

Released on August 27, 2018, Cumulative Update package 10 (CU10) for Microsoft SQL Server 2017 brings essential enhancements and fixes to ensure optimal database performance and stability. This update, identified by KB4342123, elevates the SQL Server 2017 product version to 14.0.3037.1. It addresses 21 specific issues that have emerged since the release of Cumulative Update 9.

This CU is crucial for maintaining the health and security of your SQL Server 2017 installations. It includes updates for core SQL Server components as well as Analysis Services, refining their product and file versions. Notably, Analysis Services components are updated to product version 14.0.226.1. As of this release, no known issues have been identified within this cumulative update package.

Overview of Fixes and Improvements

Cumulative Update 10 delivers a comprehensive set of 21 fixes and improvements spanning various components of SQL Server 2017. These updates target critical areas such as Analysis Services, Master Data Services, SQL Server Client Tools, Connectivity, Engine, and Integration Services, among others. Each fix aims to resolve specific bugs or introduce valuable enhancements to improve the overall user experience and system reliability.

To assist users in understanding the scope of this update, Microsoft provides a downloadable Excel workbook. This workbook contains a summarized list of all builds, their current support lifecycles, and detailed fix lists for both SQL Server 2019 and SQL Server 2017. It serves as an invaluable resource for planning your update strategy and understanding the changes introduced.

Bug Reference Description Fix Area Component Platform
12201819 FIX: Totals are wrong after you filter on a pivot table item and remove the filter in SSAS (KB2932559) Analysis Services Analysis Services Windows
12227459 FIX: Synchronization of a database takes a long time to finish in SQL Server 2017 (KB4345402) Analysis Services Analysis Services Windows
12245666 FIX: No records are returned when you run an MDX query after restarting SSAS 2016 and 2017 (KB4340746) Analysis Services Analysis Services Windows
12229848 FIX: Delete operation doesn’t work in an entity when you enable Approval Required permission in SQL Server 2017 Master Data Services (KB4346330) Master Data Services Client Windows
12210593 FIX: Incorrect prompt to restart SQL Server 2017 on Linux when not required (KB4053447) SQL Server Client Tools Command Line Tools Linux
12213556 FIX: A value set for the “Accepted NTLM SPNs” variable causes an access violation during startup of SQL Server 2017 (KB4345683) SQL Server Connectivity Protocols Windows
12128370 FIX: Errors 3212 and 3013 occur when you back up a database in AlwaysOn Availability Groups in SQL Server 2017 (KB4346643) SQL Server Engine Backup Restore Windows
12248777 FIX: VSS backup fails in secondary replica of Basic Availability Groups in SQL Server 2016 and 2017 (KB4341221) SQL Server Engine Backup Restore Windows
12245662 FIX: Transaction delays on the primary replica if database synchronization is reported incorrectly on a secondary replica in SQL Server (KB4338576) SQL Server Engine High Availability and Disaster Recovery Windows
12247780 FIX: Out of memory error when you run SQL Server 2017 inside a Linux Docker container (KB4347055) SQL Server Engine Linux Linux
12221447 FIX: Slow performance in SQL Server 2017 when you run a query that contains HASHBYTES function when compared to SQL Server 2016 (KB4345228) SQL Server Engine Programmability Windows
12242742 FIX: Many xml_deadlock_report events are reported for one single intra-query deadlock occurrence in SQL Server 2016 and 2017 (KB4338715) SQL Server Engine Query Execution All
12150907 Improvement: Update to support QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n in USE HINT option in SQL Server 2017 (KB4342424) SQL Server Engine Query Optimizer All
12171986 Improvement enables CREATE AVAILABILITY GROUP and ALTER AVAILABILITY GROUP DDLs to set the SESSION_TIMEOUT for a configuration-only replica in SQL Server (KB4344904) SQL Server Engine Replication All
12249912 FIX: Change Tracking cleanup messages unexpectedly recorded in the error log for Always On Availability Groups in SQL Server (KB4456883) SQL Server Engine Replication Windows
12203152 FIX: Error occurs when you open a symmetric key that is encrypted by an asymmetric key in SQL Server 2017 (KB4346812) SQL Server Engine Security Infrastructure Windows
12248752 FIX: Leakage of sensitive data occurs when you enable DDM function in SQL Server 2016 and 2017 (KB4100582) SQL Server Engine Security Infrastructure All
12164662 FIX: Event notifications for AUDIT_LOGIN and AUDIT_LOGIN_FAILED events will cause an unusual growth of TempDB in SQL Server 2016 and 2017 (KB4341398) SQL Server Engine Service Broker Windows
12177844 FIX: A memory leak occurs in sqlwepxxx.dll causes the WmiPrvSe.exe process to crash (KB4133191) SQL Server Engine Service Broker Windows
12201714 FIX: MEMORYCLERK_SOSMEMMANAGER grows larger and FAIL_PAGE_ALLOCATION error is logged after you enable large page allocations (KB4344103) SQL Server Engine SQL OS Windows
12251323 FIX: Out of memory error occurs even when there are many free pages in SQL Server (KB4347088) SQL Server Engine SQL OS Windows

Obtaining and Installing Cumulative Update 10

Updating your SQL Server 2017 instance to CU10 is a straightforward process, whether you’re running Windows or Linux. It’s highly recommended to apply the latest cumulative update to benefit from the most recent fixes and improvements, enhancing both the stability and security of your database environment. Always ensure you have a robust backup strategy in place before initiating any update process.

SQL Server 2017 Update Process

For Windows Installations

Users on Windows can acquire this cumulative update package through two primary channels: the Microsoft Download Center for a direct download, or the Microsoft Update Catalog for a broader search.

Microsoft Download Center (Recommended)
The Microsoft Download Center offers the most recent cumulative update package directly. This is often the quickest method for single-instance updates.

Download the latest cumulative update package for SQL Server 2017 now.

Should the download page be inaccessible, contact Microsoft Customer Service and Support to obtain the package directly.

Microsoft Update Catalog
The Microsoft Update Catalog provides a comprehensive collection of updates, including all previous CUs for SQL Server 2017. While it allows access to older CUs, the best practice is to always install the latest available version.

Download the cumulative update package for SQL Server 2017 CU10 now.

For Linux Installations

Updating SQL Server 2017 on Linux involves configuring the Cumulative Update repository and then using your platform’s package manager. This approach ensures that your SQL Server packages are updated efficiently within the Linux ecosystem.

  1. Configure the Cumulative Update repository: Ensure your system has the correct CU repository configured. This is a one-time setup that allows your package manager to find and install SQL Server updates.
  2. Update SQL Server packages: Use the appropriate platform-specific command to update your SQL Server installation. For example, on RHEL/CentOS, you might use sudo yum update mssql-server, while on Ubuntu, it would be sudo apt-get update && sudo apt-get install mssql-server.
  3. For detailed installation instructions and direct links to the CU package downloads for Linux, refer to the SQL Server 2017 Release Notes.

File Information

Understanding the integrity and components of the update package is vital. This section provides details on file hashes for verification and a breakdown of the files included in the cumulative update.

File Hash Information

To ensure the integrity of your downloaded SQLServer2017-KB4342123-x64.exe file, you can compute its SHA256 hash and compare it against the value provided below. This verification step helps confirm that the file has not been tampered with or corrupted during download.

certutil -hashfile SQLServer2017-KB4342123-x64.exe SHA256
File Name SHA256 Hash
SQLServer2017-KB4342123-x64.exe 29FBBA3E7738028A49E3DD9BB0EC9176ADEB939F3E0E40795A63A5C6559D38E4

Cumulative Update Package File Details

The English version of this package includes various files, each with specific attributes such as version, size, date, time (in Coordinated Universal Time - UTC), and platform compatibility. These details are instrumental for administrators managing specific component versions within their SQL Server environment.

For brevity, a comprehensive list of all updated files is available in the Excel workbook mentioned earlier. Below are representative samples for major components.

SQL Server 2017 Analysis Services (x64-based versions)

File Name File Version File Size Date Time Platform
Asplatformhost.dll 2017.140.226.1 266408 27-Jul-18 16:58 x64
Microsoft.analysisservices.minterop.dll 14.0.226.1 741544 27-Jul-18 16:54 x86
Microsoft.analysisservices.server.core.dll 14.0.226.1 1380512 27-Jul-18 16:58 x86
Msmdlocal.dll 2017.140.226.1 60709544 27-Jul-18 16:58 x64
Msmdsrv.exe 2017.140.226.1 60609192 27-Jul-18 16:59 x64
Msolap.dll 2017.140.226.1 10258592 27-Jul-18 16:59 x64
Xmlrw.dll 2017.140.3037.1 305296 27-Jul-18 16:36 x64

SQL Server 2017 Database Services Common Core

File Name File Version File Size Date Time Platform
Batchparser.dll 2017.140.3037.1 182304 27-Jul-18 16:30 x64
Instapi140.dll 2017.140.3037.1 72224 27-Jul-18 16:36 x64
Microsoft.analysisservices.adomdclient.dll 14.0.226.1 1091560 27-Jul-18 16:30 x86
Sql_common_core_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64
Sqldumper.exe 2017.140.3037.1 142920 27-Jul-18 16:54 x64
Svrenumapi140.dll 2017.140.3037.1 1175112 27-Jul-18 16:36 x64

SQL Server 2017 sql_dreplay_client

File Name File Version File Size Date Time Platform
Dreplayclient.exe 2017.140.3037.1 120976 27-Jul-18 16:57 x86
Dreplaycommon.dll 2017.140.3037.1 701904 27-Jul-18 16:57 x86
Dreplayserverps.dll 2017.140.3037.1 34336 27-Jul-18 16:36 x86
Sql_dreplay_client_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64

SQL Server 2017 sql_dreplay_controller

File Name File Version File Size Date Time Platform
Dreplaycontroller.exe 2017.140.3037.1 351776 27-Jul-18 16:57 x86
Dreplayprocess.dll 2017.140.3037.1 173088 27-Jul-18 16:57 x86
Sql_dreplay_controller_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64

SQL Server 2017 Database Services Core Instance

File Name File Version File Size Date Time Platform
Hkengine.dll 2017.140.3037.1 5859912 27-Jul-18 16:58 x64
Microsoft.sqlserver.xevent.configuration.dll 2017.140.3037.1 153672 27-Jul-18 16:54 x64
Qds.dll 2017.140.3037.1 1169984 27-Jul-18 19:50 x64
Sql_engine_core_inst_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64
Sqllang.dll 2017.140.3037.1 41240720 27-Jul-18 19:59 x64
Sqlmin.dll 2017.140.3037.1 40454288 27-Jul-18 19:59 x64
Sqlservr.exe 2017.140.3037.1 487568 27-Jul-18 19:50 x64
Sqltses.dll 2017.140.3037.1 9562768 27-Jul-18 19:50 x64

SQL Server 2017 Database Services Core Shared

File Name File Version File Size Date Time Platform
Bcp.exe 2017.140.3037.1 121376 27-Jul-18 16:58 x64
Dts.dll 2017.140.3037.1 3000352 27-Jul-18 16:58 x64
Microsoft.sqlserver.replication.dll 2017.140.3037.1 1665056 27-Jul-18 16:58 x64
Sql_engine_core_shared_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64
Sqlcmd.exe 2017.140.3037.1 250440 27-Jul-18 16:58 x64
Sqldiag.exe 2017.140.3037.1 1260496 27-Jul-18 16:58 x64
Txagg.dll 2017.140.3037.1 365008 27-Jul-18 16:58 x64

SQL Server 2017 sql_extensibility

File Name File Version File Size Date Time Platform
Launchpad.exe 2017.140.3037.1 1125008 27-Jul-18 17:23 x64
Sql_extensibility_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64
Sqlsatellite.dll 2017.140.3037.1 925136 27-Jul-18 17:15 x64

SQL Server 2017 Full-Text Engine

File Name File Version File Size Date Time Platform
Fd.dll 2017.140.3037.1 668744 27-Jul-18 16:58 x64
Fdhost.exe 2017.140.3037.1 116296 27-Jul-18 17:08 x64
Sql_fulltext_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64

SQL Server 2017 sql_inst_mr

File Name File Version File Size Date Time Platform
Imrdll.dll 14.0.3037.1 25120 27-Jul-18 16:36 x86
Sql_inst_mr_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64

SQL Server 2017 Integration Services

File Name File Version File Size Date Time Platform
Attunity.sqlserver.cdccontroltask.dll 5.0.0.70 75248 02-May-18 00:56 x86
Dts.dll 2017.140.3037.1 3000352 27-Jul-18 16:58 x64
Isdeploymentwizard.exe 14.0.3037.1 466576 27-Jul-18 17:23 x64
Microsoft.sqlserver.manageddts.dll 14.0.3037.1 615496 27-Jul-18 16:58 x86
Sql_is_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64
Txtermextraction.dll 2017.140.3037.1 8676496 27-Jul-18 16:58 x64

SQL Server 2017 sql_polybase_core_inst

File Name File Version File Size Date Time Platform
Dms.dll 13.0.9124.18 523944 10-May-18 04:42 x86
Mpdwsvc.exe 2017.140.3037.1 7325256 27-Jul-18 17:15 x64
Microsoft.sqlserver.datawarehouse.sql.parser.dll 13.0.9124.18 3860136 10-May-18 04:42 x86
Sqltses.dll 2017.140.3037.1 9717248 27-Jul-18 17:07 x64

SQL Server 2017 sql_shared_mr

File Name File Version File Size Date Time Platform
Smrdll.dll 14.0.3037.1 25120 27-Jul-18 16:36 x86
Sql_engine_core_shared_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64

SQL Server 2017 sql_tools_extensions

File Name File Version File Size Date Time Platform
Autoadmin.dll 2017.140.3037.1 1450056 27-Jul-18 16:57 x86
Dtaengine.exe 2017.140.3037.1 205896 27-Jul-18 17:07 x86
Sql_tools_extensions_keyfile.dll 2017.140.3037.1 101960 27-Jul-18 16:58 x64
Xmlrw.dll 2017.140.3037.1 305296 27-Jul-18 16:36 x64

Important Considerations Before Updating

Before proceeding with the installation of Cumulative Update 10, it is crucial to review several important notices that could impact your SQL Server environment. These include prerequisites, restart requirements, and specific behavioral changes or necessary scripts for certain configurations.

Prerequisites

To successfully apply this cumulative update package, your system must be running SQL Server 2017. Attempting to install it on earlier versions or different SQL Server editions will not work.

Restart Information

A restart of your computer or SQL Server services may be required after the cumulative update package has been applied. Plan for this downtime accordingly, especially in production environments.

Registry Information

No manual changes to the Windows registry are required to use any of the hotfixes included in this package. The installation process handles all necessary registry modifications.

Pacemaker Notice

IMPORTANT: A significant behavioral change has been introduced in Linux distributions utilizing the latest Pacemaker package 1.1.18-11.el7. This change affects the start-failure-is-fatal cluster setting when its value is false, directly impacting the failover workflow for Always On Availability Groups.
Normally, if a primary replica experiences an outage, the cluster is expected to seamlessly fail over to an available secondary replica. However, with this Pacemaker version, the cluster may repeatedly attempt to restart the failed primary replica, preventing a failover to a healthy secondary even if the primary suffers a permanent outage. This issue affects all SQL Server versions, regardless of their cumulative update level.

Two methods are provided to mitigate this issue:

Method 1: Adjust Pacemaker Properties

This method involves modifying specific Pacemaker properties to restore the desired failover behavior.

  1. Remove start-failure-is-fatal override:
    • For RHEL, Ubuntu: pcs property unset start-failure-is-fatal (or pcs property set start-failure-is-fatal=true)
    • For SLES: crm configure property start-failure-is-fatal=true
  2. Decrease cluster-recheck-interval value:
    • For RHEL, Ubuntu: pcs property set cluster-recheck-interval=<Xmin>
    • For SLES: crm configure property cluster-recheck-interval=<Xmin>
  3. Add failure-timeout meta property to each AG resource:
    • For RHEL, Ubuntu: pcs resource update ag1 meta failure-timeout=60s
    • For SLES: crm configure edit ag1 (then in the text editor, add meta failure-timeout=60s after any params and before any ops)

Note: When setting <Xmin>, ensure cluster-recheck-interval is greater than failure-timeout. For instance, if failure-timeout is 60 seconds, setting cluster-recheck-interval to 120 seconds would result in restart attempts between 60 and 120 seconds. Avoid setting cluster-recheck-interval too low, as this can increase cluster overhead. Consult Pacemaker documentation for optimal values.

Method 2: Revert Pacemaker Version

Alternatively, you can revert your Pacemaker installation to version 1.1.16, which does not exhibit this behavioral change. This might be a simpler solution if downgrading Pacemaker is feasible within your operational guidelines.

Query Store Notice

IMPORTANT: If you are using Query Store and are updating your SQL Server 2017 instance directly from Cumulative Update 2 (CU2) to Cumulative Update 3 (CU3) or any later CU (including CU10), you must run a specific T-SQL script. This script addresses potential issues with query plans generated by the older engine version. If you have already installed SQL Server 2017 CU3 or a later CU, this script is not necessary.

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;

Hybrid Environment Deployment

Deploying updates in hybrid SQL Server environments, such as those utilizing Always On Availability Groups, transactional replication, or failover clusters, requires careful planning to minimize downtime and prevent data loss. It is essential to understand the specific procedures for your configuration.

Here is a general workflow for applying a SQL Server CU, which is often adapted for high-availability setups:

mermaid graph TD A[Start Update Process] --> B{Identify Environment Type}; B -- Standalone --> C[Backup Database & System]; B -- Cluster/Always On/Replication --> D[Consult Deployment Guidelines for HA]; C --> E[Download CU Package]; D --> E; E --> F[Run Installer]; F --> G{Restart Required?}; G -- Yes --> H[Perform System/Service Restart]; G -- No --> I[Verify Installation]; H --> I; I --> J[End Update Process];

For clustered environments, typically a rolling update process is recommended: first update passive nodes, then fail over to the updated node, and finally update the remaining nodes. For Always On Availability Groups, a similar approach involves updating secondary replicas first, failing over, and then updating the original primary. Special attention is needed for configurations like SSISDB catalog with Always On.

For a general visual guide on installing SQL Server Cumulative Updates, you may find various community tutorials helpful:
SQL Server CU Installation Tutorial Placeholder This is a placeholder for a relevant video. Search for “SQL Server Cumulative Update Installation” for actual guides.

Language Support

SQL Server Cumulative Updates are designed to be multilingual, meaning this CU package is not language-specific. It can be applied to all supported languages for SQL Server 2017 installations.

Components (Features) Updated

A single CU package bundles all available updates for every SQL Server 2017 component. However, the update process intelligently targets only those components currently installed on the SQL Server instance being serviced. If you add a new SQL Server feature (e.g., Analysis Services) to your instance after applying this CU, you must reapply the CU to ensure the new feature is also updated to the latest build.

Support for This Update

Should you encounter any further issues or require troubleshooting beyond the scope of this article, you may need to create a service request with Microsoft Customer Service and Support. Standard support costs will apply to issues that are not directly covered by this specific cumulative update package.

Uninstalling Cumulative Update 10

While it is generally not recommended to uninstall cumulative updates, circumstances may arise where it becomes necessary. The process differs slightly depending on your operating system.

On Windows

  1. Open Control Panel.
  2. Navigate to Programs and Features, then select View installed updates.
  3. Locate the entry corresponding to this cumulative update package under SQL Server 2017.
  4. Right-click (or press and hold) the entry, then select Uninstall.

On Linux

To uninstall this CU on Linux, you will need to revert the installed SQL Server package to its previous version using your distribution’s package manager. For detailed instructions on how to roll back a SQL Server installation on Linux, refer to the Rollback SQL Server documentation.

Third-Party Information Disclaimer:
Any third-party products discussed in this article are manufactured by companies independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.

We hope this comprehensive overview of SQL Server 2017 Cumulative Update 10 (KB4342123) is helpful for your update planning. What are your experiences with SQL Server CUs, or do you have any tips for a smooth update process? Share your thoughts in the comments below!

Post a Comment