- Error number
- 3414
- Severity
- 21 (fatal: the connection ends; may indicate a serious problem)
- State
- 1 (from the error log example in Microsoft's reference; not reproduced here)
- Product
- Microsoft SQL Server Database Engine
- Versions
- All supported SQL Server versions (2016 to 2025), Azure SQL Managed Instance
- Category
- Database State & Recovery
- Last reviewed
- 24 October 2026
On this page
What it means
Error 3414 is written to the SQL Server error log when recovery of a database fails; the database is marked SUSPECT and stays unusable until the cause is fixed or the database is restored.
Each time a database starts (service startup, attach, SET ONLINE, end of a restore) recovery replays committed work from the log and rolls back unfinished transactions. If that hits an error it cannot work around, SQL Server writes 3414 to the error log and marks the database SUSPECT. Applications never see 3414 itself; they get error 926 when they try to use the database. Microsoft notes that when this happens to tempdb, the instance shuts down.
3414 only reports that recovery gave up. The cause is the error logged just before it by the same session (the same spid value on each line), for example an 824 checksum failure on a log block, or an 823 operating system I/O error. The catalogue in sys.messages lists severity 10, but Microsoft's documented error log entry shows severity 21; the level was not observed here.
Common causes
- A damaged page or log block read during recovery, typically reported first as error 824 (bad checksum) or 823 (operating system I/O error).
- A transient storage problem at startup: a volume, SAN path or network share that was briefly unavailable while recovery ran.
- A transaction log file that was replaced, truncated or copied from a different point in time.
- Other recovery failures logged just before it, such as errors 3313 or 3314 during redo or undo.
Diagnose it
Read-only These queries only read metadata and dynamic management views. They do not change data, permissions or configuration, so they are safe to run first.
Read the error that came just before 3414
EXEC sp_readerrorlog 0, 1, N'during recovery';
EXEC sp_readerrorlog 0, 1, N'AppDb';
EXEC sp_readerrorlog 1, 1, N'AppDb'; -- the previous log, if the service restarted The 3414 line and, a moment earlier with the same spid, the error that stopped recovery (823, 824, 3313, 3314 and so on). That error decides whether the problem is transient or permanent.
Which databases are SUSPECT?
SELECT name, state_desc, user_access_desc, recovery_model_desc
FROM sys.databases
WHERE state_desc IN ('SUSPECT', 'RECOVERY_PENDING', 'EMERGENCY'); A database that hit 3414 shows SUSPECT. RECOVERY_PENDING means its files could not be opened at all (see 945): recovery never started.
Damaged pages recorded by SQL Server
SELECT DB_NAME(database_id) AS database_name, file_id, page_id, event_type, error_count, last_update_date
FROM msdb.dbo.suspect_pages
ORDER BY last_update_date DESC; Rows for the affected database confirm damaged pages; rows for other databases on the same storage mean the problem is not confined to one database.
Which backups are available?
SELECT TOP (20) bs.type, bs.backup_start_date, bs.backup_finish_date, bs.has_backup_checksums, mf.physical_device_name
FROM msdb.dbo.backupset AS bs
JOIN msdb.dbo.backupmediafamily AS mf ON mf.media_set_id = bs.media_set_id
WHERE bs.database_name = N'AppDb'
ORDER BY bs.backup_finish_date DESC; The latest full (D), differential (I) and log (L) backups: the material for the restore Microsoft recommends as the first and best option.
How to fix it
Each fix is labelled with what it changes. Try read-only checks and the least invasive fix first, and test changes outside production.
Fix a transient cause, then retry recovery
Changes database stateIf the earlier error points to something temporary (a volume that was offline, a path that dropped), fix it and start the database again so recovery runs once more. Check the Windows System event log for storage errors first.
Caution: Retry only when the earlier error shows a temporary cause that is now fixed. Repeated attempts on failing storage can make damage worse; keep copies of the files and error logs before you start.
ALTER DATABASE AppDb SET OFFLINE;
ALTER DATABASE AppDb SET ONLINE;
Restore from the last known good backup
Changes database stateMicrosoft names this the first and best option when the error cannot be corrected: it returns the database to a known consistent state. Take a tail-log backup if the log is readable, restore the full, differential and log backups in order, then run DBCC CHECKDB on the result.
Caution: RESTORE with REPLACE overwrites the suspect database and the evidence in it. Take the tail-log backup and keep copies of the original files first.
BACKUP LOG AppDb TO DISK = N'D:\Backups\AppDb_tail.trn' WITH NO_TRUNCATE;
RESTORE DATABASE AppDb FROM DISK = N'D:\Backups\AppDb_full.bak' WITH NORECOVERY, REPLACE;
RESTORE LOG AppDb FROM DISK = N'D:\Backups\AppDb_tail.trn' WITH RECOVERY;
No backup: involve an expert before anything else
Client or network sideWithout a usable backup, Microsoft describes emergency mode options and copying data out to another database, and warns that transactional consistency cannot be guaranteed because recovery failed. These are specialist steps, best done on a copy of the files with Microsoft support or an experienced DBA, and not a routine fix: do not run DBCC CHECKDB repair options as a first response.
Examples
The error log entry when recovery fails
Shown as documented by Microsoft; not reproduced here because it needs a database whose recovery fails. The engine wording from sys.messages is shown, with placeholder database ID values; the error appears in the SQL Server error log during startup, not in a query window.
-- No statement: logged when the database starts, for example at service startup
EXEC sp_readerrorlog 0, 1, N'during recovery';
An error occurred during recovery, preventing the database 'AppDb' (5:0) from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support.
How to prevent it
Take full and log backups WITH CHECKSUM and test restores regularly, so a failed recovery is an inconvenience rather than a disaster. Keep PAGE_VERIFY CHECKSUM on so damage is found when pages are read, not during a later recovery.
Alert on errors 823, 824 and 825 and on databases that are not ONLINE, and keep storage drivers and firmware current with write caches protected against power loss.
Common questions
Why did my application get 926 when the error log says 3414?
3414 is logged once, when recovery fails and the database is marked SUSPECT. Every later attempt to use the database returns 926 to the client.
Can 3414 go away on its own?
Microsoft notes it can be caused by a transient condition. If the earlier error was a temporary storage problem that is now fixed, restarting the database may let recovery complete. A permanent failure fails again every time.
Does a page error during recovery always cause 3414?
No. With deferred transactions, recovery can complete despite some page errors and leave the affected transactions deferred, so the database comes online without 3414. Those pages still need restoring.
Learn more on CodeWithSQL
Official documentation
Last technically reviewed 24 October 2026; examples and diagnostics run on SQL Server 2025 (17.0.1145.4). Message text checked against the engine's sys.messages catalogue.