Symptoms
Consider the following scenario:
-
You have a database that uses the BULK_LOGGED or SIMPLE recovery model in Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, or SQL Server 2014.
-
You turn on the SET XACT_ABORT switch.
-
You try to run multiple BULK INSERT statements in a single-distributed transaction.
In this scenario, the BULK INSERT statement may fail, and you receive the following error message:
Location: pageref.cpp:913
Expression: IS_OFF (BUF_MINLOGGED, m_buf->bstat) || pageModifyType != PageModifyType_Contents || GetPagePtr ()->IsTextPage () SPID: 56 Process ID: 2136 Msg 3624, Level 20, State 1, Line 7 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 QFE from Technical Support. Msg 0, Level 20, State 0, Line 0 A severe error occurred on the current command. The results, if any, should be discarded.Additionally, a mini-dump file may be generated in the SQL Server log folder.
Note This issue usually occurs when SQL Server Integration Services (SSIS) is used. For example, Microsoft Distributed Transaction Coordinator (MS DTC) is involved to start distributed transactions together with SET XACT_ABORT ON if the TransactionOption package level property is set to Required.Cause
This issue occurs because of an error in SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, or SQL Server 2014.
Resolution
The issue was first fixed in the following cumulative update of SQL Server.
Cumulative Update 1 for SQL Server 2014 /en-us/help/2931693
Cumulative Update 8 for SQL Server 2012 SP1 /en-us/help/2917531
Cumulative Update 10 for SQL Server 2008 R2 SP2 /en-us/help/2908087
Cumulative Update 10 for SQL Server 2008 SP1 /en-us/help/2279604
Cumulative Update 1 for SQL Server 2008 SP2 /en-us/help/2289254
Cumulative Update 5 for SQL Server 2008 R2 /en-us/help/2438347
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:
Workaround
To work around this issue, set the database to the Full recovery model.
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
References
For more information about the SET XACT_ABORT setting, visit the following Microsoft Developer Network (MSDN) website:
General information about the "SET XACT_ABORT" settingFor more information about operations that are minimally logged, visit the following MSDN website:
General information about operations that are minimally loggedFor more information about how to maintain data integrity by using transactions, visit the following MSDN website:
General information about how to maintain data integrity by using transactionsFor more information about the Incremental Servicing Model for SQL Server, click the following article number to view the article in the Microsoft Knowledge Base:
935897 An Incremental Servicing Model is available from the SQL Server team to deliver hotfixes for reported problems For more information about the naming schema for SQL Server updates, click the following article number to view the article in the Microsoft Knowledge Base:
822499New naming schema for Microsoft SQL Server software update packagesFor more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:
824684 Description of the standard terminology that is used to describe Microsoft software updates