Applies ToSQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer Windows SQL Server 2017 Enterprise Core Windows SQL Server 2017 Enterprise Windows

Symptoms

Assume that you have at least one AlwaysOn Availability Group with DTC_SUPPORT=PER_DB in Microsoft SQL Server 2016 or 2017. If you execute a SQL Server trigger that contains a cross-database transaction involving at least one of the Availability Group databases, an assertion failure may occur. The SQL Server error log reports the following assertion failure messages:

DateTime spid20s     * *******************************************************************************DateTime spid20s     * BEGIN STACK DUMP:DateTime spid20s     * Location:     FileName:3880DateTime spid20s     * Expression: m_state == BaseXact::XACT_PREPARED || m_state == BaseXact::XACT_COMMITTEDDateTime spid20s     * SPID:                            20

DateTime spid20s     Error: 17066, Severity: 16, State: 1.DateTime spid20s     SQL Server Assertion: File: <FileName>, line=LineNumber Failed Assertion = 'm_state == BaseXact::XACT_PREPARED || m_state == BaseXact::XACT_COMMITTED'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.DateTime spid20s     Error: 3624, Severity: 20, State: 1.DateTime spid20s     A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.

Additionally, you may receive an error message that resembles the following:

DateTime Server      Error: 19407, Severity: 16, State: 1.

DateTime Server      The lease between availability group 'GroupName' and the Windows Server Failover Cluster has expired. A connectivity issue occurred between the instance of SQL Server and the Windows Server Failover Cluster. To determine whether the availability group is failing over correctly, check the corresponding availability group resource in the Windows Server Failover Cluster.

Status

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

Resolution

Cumulative Update Information:

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:

On-Demand Hotfix Information:

This issue is fixed in the following on-demand hotfixes for SQL Server:

References

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

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.