FIX: Rollback recovery on a snapshot fails when you run DBCC CHECKDB and then SQL Server shuts down unexpectedly

S’applique à : SQL Server 2012 EnterpriseSQL Server 2012 DeveloperSQL Server 2012 Standard

Symptoms


Assume that you run the DBCC CHECKDB command that creates a transient snapshot or a snapshot on a database that has ongoing transactions in SQL Server 2012 or SQL Server 2014, and the rollback recovery on the snapshot fails because of an external error, for example, an I/O error. In this situation, the following error messages are logged in SQL Server error log, and SQL Server shuts down unexpectedly:
<timestamp> <SPID> <n> transactions rolled forward in database '<dbname>' (<id>). This is an informational message only. No user action is required.
<timestamp> <SPID> The operating system returned error 665(The requested operation could not be completed due to a file system limitation) to SQL Server during a write at offset <offset> in file '<filename>'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
<timestamp> <SPID> Error: 3314, Severity: 17, State: 3.
<timestamp> <SPID> During undoing of a logged operation in database '<dbname>', an error occurred at log record ID (<aa:bb:cc>). Typically, the specific failure is logged previously as an error in the Windows Event Log service. Restore the database or file from a backup, or repair the database.
<timestamp> <SPID> Error: 831, Severity: 20, State: 1.
<timestamp> <SPID> Unable to deallocate a kept page.
<timestamp> <SPID> Error: 3449, Severity: 21, State: 1.
<timestamp> <SPID> SQL Server must shut down in order to recover a database (database ID <dbid>). The database is either a user database that could not be shut down or a system database. Restart SQL Server. If the database fails to recover after another startup, repair or restore the database.
<timestamp> <SPID> SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.
<timestamp> <SPID> SQL Trace was stopped due to server shutdown. Trace ID = '2'. This is an informational message only; no user action is required.
<timestamp> <SPID> Error: 17188, Severity: 16, State: 1.

Cause


This issue occurs because SQL Server tries to bring the affected database offline for error handling when a rollback recovery on a snapshot fails. However, the database cannot be offline because of the retained latch internally. Therefore, the SQL Server service is shut down.

Resolution


Service pack information

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 .

Cumulative Update information

The issue was first fixed in the following cumulative update of SQL Server.

Status


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