FIX: Rollback causes database to go to suspect mode in SQL Server 2012 or SQL Server 2014

Applies to: SQL Server 2012 EnterpriseSQL Server 2012 DeveloperSQL Server 2012 Standard

Symptoms


Consider the following scenario:
  • You have a database that has Snapshot Isolation or Read Committed Snapshot Isolation level enabled in Microsoft SQL Server 2012 or SQL Server 2014.
  • The database contains a non-empty table that has a multi-column clustered index. The leading key of the clustered index is set to NOT NULL.
  • You begin a transaction and add a column into the table. The value of this column is updated.
  • You alter the leading key of the clustered index to allow NULL value.
  • You insert rows with NULL values for the leading key of the clustered index, and then abort the transaction.
In this scenario, the rollback causes the database to go suspect and only "repairable" with DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS command. Additionally, you may receive the following error message:
Msg 3316, Level 21, State 2, Line 135
During undo of a logged operation in database '%.*ls', an error occurred at log record ID %S_LSN. The row was not found. Restore the database from a full backup, or repair the database.


Resolution


Service pack information for SQL Server 2014

To resolve this issue, obtain Service Pack 1 for SQL Server 2014.

For more information about SQL Server 2014 Service Pack 1 (SP1), see bugs that are fixed in SQL Server 2014 Service Pack 1 .

Service pack information for SQL Server 2012

To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2012. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
2755533 How to obtain the latest service pack for SQL Server 2012

Status


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