Performance and Stability Related Fixes in Post-SQL Server 2014 SP3 Builds

As of July 29, 2019, there have been four Cumulative Updates (CU) for the Service Pack 3 branch of SQL Server 2014. There were a relatively large number of hotfixes in this last cumulative update. SP3 CU4 is the final Cumulative Update for SQL Server 2014 SP3, since SQL Server 2014 fell out of Mainstream Support on July 9, 2019.

If you are running on the SQL Server 2014 SP3 branch, I really think you should be running the latest SQL Server 2014 SP3 Cumulative Update. 

Table 1 shows the SQL Server 2014 SP3 CU builds that have been released.

Build Description Release Date
12.0.6205 SP3 CU1 December 12, 2018
12.0.6214 SP3 CU2 February 19, 2019
12.0.6259 SP3 CU3 April 16, 2019
12.0.6329 SP3 CU4 July 29, 2019

Table 1: SQL Server 2014 SP3 CU Builds

You can follow the KB article link below to see all of the CU builds for the SQL Server 2014 RTM, SQL Server 2014 SP1, SQL Server 2014 SP2, and SQL Server 2014 SP3 branches.

SQL Server 2014 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 SP3 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 2014 features you are using.

Here are the fixes in the SP3 branch:

SQL Server 2014 SP3 Cumulative Update 1 (Build 12.0.6205), 13 total public hot fixes

FIX: Change Tracking cleanup message 22123 is unexpectedly recorded in the error log file in SQL Server

FIX: Incorrect results occur when you convert “pollinginterval” parameter from seconds to hours in sys.sp_cdc_scan in SQL Server

FIX: Access violation when you run a query that uses the XML data type in SQL Server 2014

FIX: Overestimations when using default Cardinality Estimator to query table with many null values

FIX: Access violation for query that uses INSERT INTO … SELECT to insert data into clustered columnstore index

FIX: “ran out of memory” error when executing a query on a table that has a large full-text index in SQL Server 2014 and 2016

FIX: I/O errors on a BPE file causes buffer time out in SQL Server

FIX: Assertion error occurs during restore of compressed backups in SQL Server 2016

FIX: Internal error messages when you update a FILESTREAM tombstone system table in SQL Server

FIX: ObjectPropertyEx does not return correct row count when there are partitions in a database object

FIX: SQL Server service crashes when DBCC CHECKDB runs against a database that has a corrupted partition in SQL Server


 SQL Server 2014 SP3 Cumulative Update 2 (Build 12.0.6214), 5 total public hot fixes

FIX: High CPU use when large index is used in a query on a memory-optimized table in SQL Server

FIX: “Non-yielding” error occurs when there is a heavy use of prepared statements in SQL Server 2014 and 2016

FIX: Assertion occurs when a parallel query deletes from a Filestream table


 SQL Server 2014 SP3 Cumulative Update 3 (Build 12.0.6259), 4 total public hot fixes

FIX: Query plans are different on clone database created by DBCC CLONEDATABASE and its original database in SQL Server 2016 and 2017

FIX: Columnstore filter pushdown may return wrong results when there is an overflow in filter expressions in SQL Server 2014

FIX: Log reader agent may fail after AG failover with TF 1448 enabled in SQL Server 2014


 SQL Server 2014 SP3 Cumulative Update 4 (Build 12.0.6329), 19 total public hot fixes

FIX: Access violation occurs and server stops unexpectedly when you use XEvent session with sqlos.wait_info event in SQL Server

FIX: Filtered index may be corrupted when you rebuild index in parallel in SQL Server 2014 and 2016

FIX: Stack Dump occurs in the change tracking cleanup process in SQL Server 2014, 2016 and 2017

FIX: Fail to join the secondary replica if the database has a defunct filegroup in SQL Server 2014, 2016 and 2017

FIX: Columnstore filter pushdown may return wrong results when there is an overflow in filter expressions in SQL Server 2014, 2016 and 2017

FIX: Tlog grows quickly when you run auto cleanup procedure in SQL Server 2014, 2016 and 2017

FIX: SQL Server 2014 and 2016 do not perform the requested pre-row assignments when you use MERGE statement that performs assignments of local variables for each row

FIX: Prolonged non-transactional usage of FileTable without instance restart may cause non-yielding scheduler error or server hang in SQL Server 2014

FIX: Full-text search fails to remove files from \FTDATA\FilterData subfolder in SQL Server 2014

FIX: High CPU usage on Primary when SQL Service on Readable Secondary is turned off in Availability Group in SQL Server 2014

FIX: SQL batch performance drops when you enable “Force Encryption” in SQL Server 2014

FIX: Full text search auto populate stops when Availability Group goes offline in SQL Server 2014

FIX: Error 409 occurs when you back up databases by using BackuptoURL

FIX: Fix prefast warnings (62100) in Sql\Sqlrepl\xpreplclr.net\ReplCmdDataReader.cs to prevent SQL injection attacks

FIX: Syscommittab cleanup causes a lock escalation that will block the syscommittab flush in SQL Server 2014


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”.

4 thoughts on “Performance and Stability Related Fixes in Post-SQL Server 2014 SP3 Builds

  1. I believe the latest SQL 2014 SP3 CU3 (12.0.6259) has a rather large issue with transaction logs during runtime and restores. With one instance updated, and 8 instances on an older version, I’m finding runaway transaction files (i.e. 60GB transaction files on a 20GB database, in a matter of 2 days). This particular server has over 800 databases, and we have been jumping through hoops this week to keep the logs from running out of space on a daily basis.

    On the other side of this, I have two backup servers, one on SQL 2014 SP3 CU1 and one on SQL 2014 SP3 CU3. The CU3 instance is just plain MISSING log restores!!! Meaning, I can backup and restore a log on Monday, no problem. Then on Tuesday, I backup and restore to the same database and I get this error:

    “This log cannot be restored because a gap in the log chain was created. Use more recent data backups to bridge the gap.”

    This has happened multiple times now on the CU3 instance. It has not happened EVER on the CU1 instance.

    Now, granted, we are log shipping around 12,000 databases on a daily basis… or we were. Someone at Microsoft has really botched things up. Maybe it was the same guy who programs the Windows 10 UI….

    1. What is the log reuse wait description on these databases where the transaction log is growing? For the missing log backups, is it possible that something else, outside of SQL Server is running transaction log backups, which explains why you are missing them when you try to restore log backups on the backup server?

      SQL Server 2014 SP3 CU3 only had four public hotfixes, and it was released back in April. If there was some basic problem with the transaction log backup/restore process, I think it would have been noticed by many people already, and would have been well publicized. I have not seen or heard of any problems like that.

      1. The log grew to that size in a matter of two days, from the time that I seeded the full backup, until I had finished seeding the rest of the databases on that server. So it was due to me not taking a log backup in two days.

        On all other servers I have, 11,000 or so managed just fine over that two day period. The one that is CU3 ended up with many databases with gigantic log files 4x as large as the data file. The biggest being the 60GB one.

        The reason why I do not believe that the transactions restores are working properly is because I can successfully restore a log one day, then the next day I get this error:

        “This log cannot be restored because a gap in the log chain was created. Use more recent data backups to bridge the gap.”

        And this has happened multiple times on CU3, but has not happened on our other backup server that has a previous version.

        I’ve also noticed that some backups will continue to show up in the dm_exec_requests table even the VDI has pushed a COMPLETED notification (I wrote my own VDI).

        Just because you haven’t heard about this yet doesn’t mean it isn’t an issue. We’re an edge case, log shipping over 12000 databases…

        1. Well, if you think you have discovered a bug with log restores in SQL Server 2014 SP3 CU3, you should open a case with Microsoft CSS.

          Given that error message (which I have seen many times before), I think it is more likely that something external (like Veeam or DPM) is running log backups that you are missing when you try to restore.

Leave a Reply

Your email address will not be published. Required fields are marked *

Other articles

Imagine feeling confident enough to handle whatever your database throws at you.

With training and consulting from SQLskills, you’ll be able to solve big problems, elevate your team’s capacity, and take control of your data career.