Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

MSSQL Error 823: I/O Error detected during read — Аппаратные сбои и восстановление

Обновлено: 25.08.2026  ·  Официальная база знаний

Ошибка 823 свидетельствует о том, что SQL Server отправил запрос на чтение страницы ОС Windows, но операционная система вернула аппаратную ошибку ввода-вывода (сбой чтения диска, таймаут шины или повреждение контроллера).

  • Сообщение: I/O error (bad page ID) detected during read at offset %S_BUFF on file '%ls' (Severity 24).
  • В Windows Event Log (System) фиксируются ошибки драйверов дисков Disk Error 7, Ntfs 55, storahci 129 или volsnap.
  • База данных может перейти в аварийный статус SUSPECT или прерывать выполнение бэкапов.
  • Пользователи 1С получают сообщение о фатальном сбое физического чтения данных таблицы.

1. Анализ журнала Windows и SQL Server ERRORLOG

-- Просмотр последних записей об ошибках чтения в ERRORLOG
EXEC sys.sp_readerrorlog 0, 1, '823';

Проверьте Windows Event Log: журнал System на наличие ошибок контроллера disk, hba, storport, nvme.

2. Проверка целостности базы данных (DBCC CHECKDB)

DBCC CHECKDB ([YourDatabaseName]) WITH NO_INFOMSGS, ALL_ERRORMSGS;

3. Идентификация поврежденных страниц в msdb

SELECT 
    database_id, 
    file_id, 
    page_id, 
    error_type, 
    page_type, 
    last_update_date 
FROM msdb.dbo.suspect_pages
WHERE error_type IN (1, 2, 3);

4. Восстановление поврежденной страницы из резервной копии (Page Restore)

Если база работает в модели восстановления FULL, выполните онлайн-восстановление конкретной сбойной страницы без простоя всей базы:

-- 1. Восстановление страницы из полного бэкапа
RESTORE DATABASE [YourDatabaseName] 
   PAGE = '1:54321' 
   FROM DISK = 'D:\Backups\Full.bak' 
   WITH NORECOVERY;

-- 2. Накатка логов транзакций
RESTORE LOG [YourDatabaseName] 
   FROM DISK = 'D:\Backups\Log_1.trn' 
   WITH NORECOVERY;

-- 3. Завершение восстановления
RESTORE DATABASE [YourDatabaseName] WITH RECOVERY;

5. Аппаратная замена накопителя / перенос файлов

Если ошибка повторяется на одном смещении (offset), немедленно выведите диск из строя, мигрируйте файлы MDF/NDF на исправный LUN/SSD и проверьте кабели SAS/SATA/FC.

Практический опыт инженера: Ошибка 823 никогда не является программным багом SQL Server или конфигурации 1С. Это 100% аппаратный инцидент: сбой диска, контроллера RAID, поломка кэша контроллера без BBU или деградация SAN fabric.

Частые вопросы (FAQ)

В чем фундаментальная разница между ошибками 823 и 824?

Ошибка 823 — это сбой на уровне операционной системы и драйвера (ОС не смогла прочитать байты с накопителя). Ошибка 824 — это логический сбой: ОС прочитала данные успешно, но SQL Server обнаружил несовпадение контрольной суммы Torn Page / Checksum.

Почему ошибка 823 имеет Severity 24?

Severity 24 указывает на критический сбой аппаратного уровня. Соединение мгновенно закрывается, а транзакция откатывается.

Поможет ли repair_allow_data_loss при ошибке 823?

Команда DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS может удалить поврежденную страницу вместе с данными, но она не устранит первопричину — деградацию физического диска или контроллера RAID.

Как перенести сбойный файл базы на другой диск при ошибке 823?

Переведите базу в OFFLINE: ALTER DATABASE [DB] SET OFFLINE. Скопируйте файл на новый исправный диск, измените путь: ALTER DATABASE [DB] MODIFY FILE (NAME = logical_name, FILENAME = 'new_path') и переведите базу в ONLINE.