On my SQL Server 2012 x64 Std instance I had a large transaction fail due to the transaction log filling up yesterday, it couldn't be rolled back and SQL Server has restarted the specific DB to perform recovery.
The DB is around 750GB with the tlog hitting 170GB (very large ETL job was running). The job was only running for a few hours but the recovery so far has taken >24 hours (70% complete, on phase 3 of 3).
What I can't understand it why it's taking so long? There doesn't seem to be any pressure on the disks, sys.dm_exec_requests
shows it waiting on PAGEIOLATCH_EX/SH
, which I'd expect. I could've restored the entire DB in this time...
If anyone can shed any light, it would be greatly appreciated.
EDIT: As requested, getting the output of the error log:
Recovery of database 'MyDB' (6) is 77% complete (approximately 28100 seconds remain). Phase 3 of 3. This is an informational message only. No user action is required.
Recovery of database 'MyDB' (6) is 77% complete (approximately 28095 seconds remain). Phase 3 of 3. This is an informational message only. No user action is required.
Recovery of database 'MyDB' (6) is 77% complete (approximately 28099 seconds remain). Phase 3 of 3. This is an informational message only. No user action is required.
Recovery of database 'MyDB' (6) is 77% complete (approximately 28102 seconds remain). Phase 3 of 3. This is an informational message only. No user action is required.
Recovery of database 'MyDB' (6) is 77% complete (approximately 28097 seconds remain). Phase 3 of 3. This is an informational message only. No user action is required.
Also, the sys.dm_exec_requests
info you're after:
session_id command status percent_complete
35 DB STARTUP background 86.06061
IFI and "Perform volume maintenance tasks" enabled/granted.