MSSQL Error 825: Read succeeded after retry — Раннее предупреждение сбоя диска
Ошибка 825 (Severity 10) не возвращается клиенту как сбой приложения, но записывается в журнал SQL Server ERRORLOG и Windows Application Event Log. Она означает, что операция чтения с диска завершилась неудачей, но успешно выполнилась после повторных автоматических попыток (Read Retry).
- В журнале SQL Server фиксируется:
A read of the file '%ls' at offset %S_BUFF succeeded after failing %d times. - Пользователи 1С могут наблюдать микрозависания и фризы интерфейса во время проведения документов.
- Резкий рост метрик задержек дискового отклика (Disk Read Latency > 50-100 мс).
- Свидетельство скорого полного отказа физического накопителя или контроллера СХД.
1. Поиск всех инцидентов 825 в истории журнала ERRORLOG
EXEC sys.sp_readerrorlog 0, 1, '825';
EXEC sys.sp_readerrorlog 1, 1, '825';
EXEC sys.sp_readerrorlog 2, 1, '825';2. Анализ дисковых задержек (Latency) по файлам баз данных
SELECT
DB_NAME(vfs.database_id) AS DatabaseName,
df.name AS LogicalFileName,
df.physical_name AS PhysicalFilePath,
vfs.num_of_reads,
vfs.num_of_bytes_read,
vfs.io_stall_read_ms / NULLIF(vfs.num_of_reads, 0) AS [AvgReadLatency_MS],
vfs.io_stall_write_ms / NULLIF(vfs.num_of_writes, 0) AS [AvgWriteLatency_MS]
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN sys.master_files AS df
ON vfs.database_id = df.database_id AND vfs.file_id = df.file_id
ORDER BY [AvgReadLatency_MS] DESC;3. Настройка SQL Server Alert на ошибку 825 (Обязательно для Production)
USE [msdb];
GO
EXEC msdb.dbo.sp_add_alert
@name = N'Severity 010: Error 825 - Disk Read Retry',
@message_id = 825,
@severity = 0,
@enabled = 1,
@delay_between_responses = 900,
@include_event_description_in = 1,
@notification_message = N'Внимание! Обнаружены ошибки повторного чтения с диска. Проверьте состояние СХД!';
GO4. План действий по предотвращению аварии
- Запустите полную проверку
DBCC CHECKDB WITH NO_INFOMSGSна всех базах экземпляра. - Снимите свежий бэкап
BACKUP DATABASE ... WITH CHECKSUM. - Вызовите инженеров СХД для проверки SMART-атрибутов накопителей, кэша RAID-контроллера и замены сбойных дисков.
Частые вопросы (FAQ)
Почему клиенты 1С не получают явных сообщений об ошибке 825?
Ошибка имеет Severity 10 (информационный уровень). СУБД скрывает сбой от клиента, поскольку операция чтения в конечном итоге завершилась успешно за счет встроенного механизма ретраев ядра.
Сколько попыток чтения выполняет SQL Server перед тем, как выбросить ошибку 823?
Ядро SQL Server предпринимает до 4 повторных попыток перечитать сбойный сектор. Если все 4 попытки завершаются неудачей, генерируется критическая ошибка 823 или 824.
Нормально ли игнорировать единичное появление ошибки 825?
Категорически нет. Ошибка 825 — это главный предиктор физической деградации дисковой подсистемы. В течение нескольких дней/недель она почти всегда перерастает в критический отказ с повреждением данных.
Может ли ошибка 825 быть вызвана антивирусом?
Да, если антивирусные агенты или агенты бэкапа без VSS блокируют прямой доступ к страницам файлов .mdf/.ldf на уровне фильтра файловой системы (Mini-Filter Driver).