Skip to content
Microsoft SQL Server

SQL Server Error 825

A read of the file succeeded after failing (read-retry warning)

Applies to: All supported SQL Server versions (2016 to 2025), Azure SQL Managed Instance
Last technically reviewed 23 October 2026 on SQL Server 2025 (17.0.1145.4)
The full message
A read of the file 'E:\SqlData\AppDb.mdf' at offset 0x0000002d460000 succeeded after failing 1 time(s) with error: 1117(The request could not be performed because of an I/O device error.). Additional messages in the SQL Server error log and operating system error log may provide more detail. This error condition threatens database integrity and must be corrected. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
Other forms of this message
Wording in the Microsoft reference
A read of the file '%ls' at offset %#016I64x succeeded after failing %d time(s) with error: %ls. Additional messages in the SQL Server error log and system event log may provide more detail. This error condition threatens database integrity and must be corrected. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
Error number
825
Severity
10 (informational)
State
Not documented by Microsoft
Product
Microsoft SQL Server Database Engine
Versions
All supported SQL Server versions (2016 to 2025), Azure SQL Managed Instance
Last reviewed
23 October 2026

What it means

Error 825 is a warning that SQL Server had to retry a read of a database file before it succeeded: nothing failed this time, but the storage is misbehaving and errors 823 or 824 are likely to follow.

When a read of a data page fails, SQL Server does not give up at once: Microsoft documents that it retries the read up to four times. If a retry succeeds, the query carries on normally and SQL Server writes 825 to the error log and the Windows event log at severity 10 (informational). No user sees an error, which is exactly why 825 is easy to miss. If every retry fails, the query gets error 823 or 824 instead.

Read the message for the file and offset (divide the offset by 8,192 for the page number), how many times the read failed, and the error after with error:, which is either an operating system error (as in 823) or a failed page check (as in 824). Microsoft describes the message as indicating a major problem with the disk hardware: the data was readable this time, but the next read may not be.

Common causes

  • A disk that is starting to fail, or a storage array with a degraded member.
  • A disk controller, array card, HBA or their firmware returning intermittent errors.
  • An outdated or faulty storage or multipath driver.
  • An unstable path to SAN or NAS storage that drops reads under load.

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.

How often has it happened, and on which files?

EXEC sp_readerrorlog 0, 1, N'succeeded after failing';
EXEC sp_readerrorlog 1, 1, N'succeeded after failing';   -- the previous log
What to look for

Each retry with its file, offset, retry count and the underlying error. Several entries, or entries on files of different databases on the same volume, point firmly at the storage.

Have reads already failed outright?

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;
What to look for

Rows here mean 823 or 824 errors have already happened: the warning stage is over and you need to check consistency and plan a restore.

Is the volume slow as well as unreliable?

SELECT DB_NAME(vfs.database_id) AS database_name, mf.physical_name,
       vfs.num_of_reads,
       vfs.io_stall_read_ms / NULLIF(vfs.num_of_reads, 0) AS avg_read_ms
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN sys.master_files AS mf
  ON mf.database_id = vfs.database_id AND mf.file_id = vfs.file_id
ORDER BY avg_read_ms DESC;
What to look for

Files on the failing volume often also show unusually high average read latency, because retried reads take longer.

Will anyone be told next time?

SELECT name, message_id, enabled, last_occurrence_date
FROM msdb.dbo.sysalerts
WHERE message_id IN (823, 824, 825);
What to look for

No rows, or disabled alerts, means these messages are only written to the log and nobody is notified.

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.

Investigate the storage now

Client or network side

Check the Windows System event log for disk, controller and driver errors around the time of each 825, run the hardware vendor's diagnostics, and update firmware and drivers. Replace failing disks before they turn retries into failed reads. SQLIOSim can test whether the storage misbehaves outside SQL Server.

Check consistency and make sure backups are good

Read-only

Run DBCC CHECKDB (no repair option) on the databases on that volume, off-peak or on a restored copy, and confirm you have a recent backup taken WITH CHECKSUM that restores. If damage is found, restore onto healthy storage; see error 824.

DBCC CHECKDB (N'AppDb') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Alert on 825 so it is never silent

Changes configuration

Because 825 never fails a query, an Agent alert is the only way it reaches a person. Add an operator notification with sp_add_notification, and create matching alerts for 823 and 824.

EXEC msdb.dbo.sp_add_alert @name = N'Error 825 read retry', @message_id = 825, @severity = 0, @include_event_description_in = 1;

Examples

A read retry recorded in the error log

Shown as documented by Microsoft; not reproduced here because it needs storage that fails a read and then succeeds. The wording is the SQL Server 2025 text from sys.messages; the file, offset and operating system error are illustrative. The query that caused the read completes normally, so the message appears only in the SQL Server error log and the Windows event log.

SELECT COUNT(*) FROM dbo.Orders;   -- completes normally
Result
A read of the file 'E:\SqlData\AppDb.mdf' at offset 0x0000002d460000 succeeded after failing 1 time(s) with error: 1117(The request could not be performed because of an I/O device error.). Additional messages in the SQL Server error log and operating system error log may provide more detail. This error condition threatens database integrity and must be corrected. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

How to prevent it

Create SQL Server Agent alerts for 823, 824 and 825 on every instance and route them to someone who acts on them. An 825 caught early is a planned disk replacement; the same problem caught late is an 823 or 824 and a restore.

Keep storage firmware and drivers current, monitor disk health with the vendor tools, run DBCC CHECKDB regularly and test restores.

Common questions

Error 825 has severity 10. Can I ignore it?

No. Severity 10 only means no query failed. Microsoft describes 825 as indicating a major problem with the disk hardware; the next read of that page may fail with 823 or 824.

Why did no application report an error?

Because the retry succeeded and the query got its data. The message only goes to the SQL Server error log and the Windows event log, which is why an alert is needed.

Learn more on CodeWithSQL

Official documentation

Last technically reviewed 23 October 2026; examples and diagnostics run on SQL Server 2025 (17.0.1145.4). Message text checked against the engine's sys.messages catalogue.

Still stuck on a SQL Server error?

Browse the full SQL Server error library, or get hands-on help from an experienced SQL professional.