KB4530500 - FIX: Assertion dump occurs when sp_cdc_disable_db is executed to disable CDC or when distributed transaction is committed after ROLLBACK SAVEPOINT in SQL Server

Applies to: SQL Server 2016 Service Pack 2SQL Server 2016 DeveloperSQL Server 2016 Enterprise

Symptoms


Consider the following scenario:
  • Assume that you enable Change Data Capture (CDC) on a database in the Always On Availability Group (AG) that has DTC_SUPPORT=PER_DB configured in Microsoft SQL Server.
  • You try to disable CDC on the database in the AG by running the stored procedure sp_cdc_disable_db.
  • In this situation, you may receive an assertion dump if the cleanup job is already completed by using msdb.dbo.sp_delete_job.
  • In another situation, committing a distributed transaction or cross-database transaction after doing ROLLBACK SAVEPOINT may also cause an assertion dump.
  • For more information, see Configure distributed transactions for an Always On availability group.
DateTime spid1462s   * *******************************************************************************​
DateTime spid1462s   *​
DateTime spid1462s   * BEGIN STACK DUMP:​
DateTime spid1462s   *   DateTime spid 1462​
DateTime spid1462s   *​
DateTime spid1462s   * Location:  xactrm.cpp:LineNumber
DateTime spid1462s   * Expression:  !(m_activeDtcRMCount == 0) || (m_preparedDtcXdesCount == m_xdesCount)​

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section. 

Resolution


This issue is fixed in the following cumulative updates for SQL Server:
About cumulative updates for SQL Server:
Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest cumulative updates for SQL Server:

References


Learn about the terminology that Microsoft uses to describe software updates.