MSSQL Ошибка 3456: Could not redo log record LSN — Восстановление LDF
- Ошибка в журнале:
Error: 3456, Severity: 21, State: 1. Could not redo log record (LSN), for transaction ID (...), on page (...), database 'Base1C'. - База данных переходит в состояние
SUSPECTилиRECOVERY PENDING. - Сервер 1С теряет соединение с пулом рабочих процессов: «Сеанс отсутствует или удален».
- Невозможность прочитать целевую страницу данных из-за несоответствия контрольной суммы LSN.
1. Локализация поврежденной страницы и файла
Из текста ошибки извлеките номер базы данных и идентификатор страницы Page ID (file_id:page_id). Проверьте состояние таблицы через PAGE дамп:
DBCC TRACEON (3604);
DBCC PAGE ('Base1C', 1, 123456, 3);
GO2. Проверка системной таблицы msdb..suspect_pages
Посмотрите список всех зарегистрированных поврежденных страниц:
SELECT database_id, file_id, page_id, event_type, error_count, last_update_date
FROM msdb.dbo.suspect_pages;
GO3. Изоляция и аварийный сброс журнала
Если ошибка 3456 блокирует накат Redo, переведите базу в аварийный режим и перестройте журнал:
ALTER DATABASE [Base1C] SET EMERGENCY;
ALTER DATABASE [Base1C] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- Принудительное исправление и очистка неконсистентного хвоста лога
DBCC CHECKDB (N'Base1C', REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;
GO
ALTER DATABASE [Base1C] SET MULTI_USER;
ALTER DATABASE [Base1C] SET ONLINE;
GO4. Восстановление страницы из резервной копии (Online Page Restore)
Если включена модель восстановления Full Recovery и есть цепочка бэкапов, восстановите только поврежденную страницу без остановки базы:
RESTORE DATABASE [Base1C] PAGE = '1:123456'
FROM DISK = N'D:\Backup\Base1C_full.bak'
WITH NORECOVERY;
RESTORE LOG [Base1C] FROM DISK = N'D:\Backup\Base1C_log.trn'
WITH RECOVERY;
GO Частые вопросы (FAQ)
Что означает операция Redo в процессе восстановления базы?
Фаза Redo повторно накатывает все зафиксированные в журнале транзакций операции, которые еще не были сброшены контрольной точкой (Checkpoint) на диск в файл данных MDF.
Что означают значения event_type в suspect_pages?
1 = Ошибка 823 (сбой ОС/CRC), 2 = Ошибка контрольной суммы (Bad Checksum 824), 3 = Torn Page (разорванная страница), 4 = Восстановлена, 5 = Исправлена через DBCC.
Можно ли предотвратить сбои LSN при сбоях электропитания?
Используйте дисковые контроллеры с кэшем, защищенным батареей (FBWC/BBWC), и включите параметр Write-Through или отключите кэширование записи на уровне операционной системы без резервного питания.
Как проверить логическую целостность метаданных 1С после ошибки 3456?
После перевода базы в Online запустите Конфигуратор 1С -> Администрирование -> Тестирование и исправление информационной базы с включенными опциями проверки ссылочной и логической целостности.