As of July 16, 2018, there have been two Cumulative Updates (CU) for the Service Pack 2 branch of SQL Server 2016. There have been a large number of hotfixes in each of these cumulative updates. If you are running on the SQL Server 2016 SP2 branch (which you should be by now), I really think you should be running the latest SQL Server 2016 SP2 Cumulative Update.
Table 1 shows the SQL Server 2016 SP2 CU builds that have been released so far.
|13.0.5149||SP2 CU1||May 30, 2018|
|13.0.5153||SP2 CU2||July 16, 2018|
| || || |
Table 1: SQL Server 2016 SP2 CU Builds
You can follow the KB article link below to see all of the CU builds for the SQL Server 2016 RTM, SQL Server 2016 SP1 and SQL Server 2016 SP2 branches.
SQL Server 2016 Build Versions
Like I have done for other versions and branches of SQL Server, I decided to scan the hotfix list for all of the Cumulative Updates in the SP2 branch, looking for performance and general reliability-related fixes for the SQL Server Database Engine. I came up with the list below, but this listing is completely arbitrary on my part. You may come up with a completely different list, based on what specific SQL Server 2016 features you are using.
Here are the fixes in the SP2 branch:
SQL Server 2016 SP2 Cumulative Update 1 (Build 13.0.5149), 29 total public hot fixes
Performance issues occur in the form of PAGELATCH_EX and PAGELATCH_SH waits in TempDB when you use SQL Server 2016
FIX: Error 9002 when there is no sufficient disk space for critical log growth in SQL Server 2014, 2016, and 2017
FIX: “Cannot use SAVE TRANSACTION within a distributed transaction” error when you execute a stored procedure in SQL Server
PFS page round robin algorithm improvement in SQL Server 2016
FIX: A memory assertion failure occurs and the server is unable to make any new connections in SQL Server
FIX: One worker thread seems to hang after another worker thread is aborted when you run a parallel query in SQL Server
FIX: TDE enabled database backup with compression causes database corruption in SQL Server 2016
FIX: Restore of a TDE compressed backup is unsuccessful when using the VDI client
FIX: Performance is slow for an Always On AG when you process a read query in SQL Server
FIX: Floating point overflow error occurs when you execute a nested natively compiled module that uses EXP functions in SQL Server
FIX: Database cannot be dropped after its storage is disconnected and reconnected in SQL Server
FIX: TDE database goes offline during log flush operations when connectivity issues cause the EKM provider to become inaccessible in SQL Server
FIX: TDE-enabled backup and restore operations are slow if the encryption key is stored in an EKM provider in SQL Server
FIX: Access violation occurs when you query a table with an integer column in SQL Server 2017 and SQL Server 2016
FIX: Parallel redo in a secondary replica of an availability group that contains heap tables generates a runtime assert dump or the SQL Server crashes with an access violation error
FIX: An assertion failure occurs when you execute a nested select query against a columnstore index in SQL Server
FIX: RESTORE HEADERONLY statement for a TDE compressed backup takes a long time to complete in SQL Server
FIX: An access violation occurs when incremental statistics are automatically updated on a table in SQL Server
SQL Server 2016 SP2 Cumulative Update 2 (Build 13.0.5153), 21 total public hot fixes
FIX: Many xml_deadlock_report events are reported for one single intra-query deadlock occurrence in SQL Server 2016
FIX: An instance of SQL Server may appear unresponsive then a “Non-yielding Scheduler” error may occur in SQL Server 2016
FIX: Parallel redo does not work after you disable Trace Flag 3459 in an instance of SQL Server
Improvement: Configure SESSION_TIMEOUT value for a Distributed Availability Group replica in SQL Server 2016 and 2017
FIX: Slow performance of SQL Server 2016 when Query Store is enabled
FIX: “PAGE_FAULT_IN_NONPAGED_AREA” Stop error when enumerating contents in a SQL Server FileTable directory
Transparent Data Encryption added for Log Shipping in SQL Server
FIX: Query on a secondary replica takes two times as long to run as on a primary replica in SQL Server
FIX: “Corrupted index” message and server disconnection when an update statistics query uses hash aggregate on SQL Server
FIX: DMVs sys.dm_db_log_stats and sys.dm_db_log_info may return incorrect values for the last database of the SQL Server 2016 instance
FIX: VSS backup fails in secondary replica of Basic Availability Groups in SQL Server 2016
FIX: TDE enabled database backup with compression causes database corruption in SQL Server
FIX: Error 19432 when you use Always On Availability Groups in SQL Server
FIX: Event notifications for AUDIT_LOGIN and AUDIT_LOGIN_FAILED events will cause an unusual growth of TempDB in SQL Server 2016
The reason that I put these lists together is that I want to convince more people to try to keep their SQL Server instances up to date with Cumulative Updates. If you do the proper testing, planning and preparation, I think the risks from installing a SQL Server Cumulative Update are quite low (despite the occasional issues that people run into).
If you install a Cumulative Update or Service Pack on a Production system the day it is released, after doing no testing whatsoever, and then run into problems (and don’t have a plan on how to recover), then I don’t have that much sympathy for you.
On the other hand, if you go through a thoughtful and thorough testing process, and you have a plan for how you will install the CU, and how you would recover if there were any problems, then you are much less likely to have any problems. You are also much more likely to avoid the issues that are fixed by all of the included fixes in the new build of SQL Server. You have done your job as a good DBA.
Finally, Microsoft has changed their official guidance about whether you should install SQL Server Cumulative Updates. As they say, “we now recommend ongoing, proactive installation of CU’s as they become available”.