MSSQL Error 9503: The transaction log cannot be truncated because of pending CDC scan
- Файл журнала транзакций (.ldf) заполняет все доступное место на диске.
- В колонке
log_reuse_wait_descтаблицыsys.databasesзафиксирован статусCDC_SCANилиREPLICATION. - Регулярные задания бэкапа журнала (Log Backup) выполняются успешно, но физический размер LDF не сжимается.
- Агент сбора данных CDC
cdc.dbname_captureзависает или останавливается с ошибкой.
1. Проверка состояния системных сессий и буфера CDC
SELECT name, log_reuse_wait, log_reuse_wait_desc
FROM sys.databases
WHERE name = DB_NAME();
-- Проверка прогресса захвата CDC
EXEC sys.sp_cdc_help_jobs;
SELECT * FROM sys.dm_cdc_log_scan_sessions;2. Принудительный сброс сессии захвата CDC
USE your_db_name;
GO
EXEC sys.sp_cdc_stop_job @job_type = N'capture';
GO
-- Ручной запуск единичного сканирования с фиксацией LSN
EXEC sys.sp_cdc_scan @maxtrans = 500, @maxscans = 10, @continuous = 0;3. Аварийный сброс флага CDC в журнале транзакций
Если CDC завис из-за поврежденной транзакции и не позволяет освободить LDF:
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1;4. Перезапуск регламентного задания CDC
EXEC sys.sp_cdc_start_job @job_type = N'capture';5. Сжатие освобожденного файла журнала
BACKUP LOG your_db_name TO DISK = 'NUL';
DBCC SHRINKFILE (your_db_name_Log, 4096); Частые вопросы (FAQ)
Почему CDC блокирует усечение журнала транзакций?
Change Data Capture читает журнал транзакций напрямую. Пока агент сбора не обработает и не запишет все изменения в таблицы отслеживания (cdc.*_CT), ядро СУБД запрещает усекать эти участки LDF во избежание потери истории изменений.
Как полностью отключить CDC на базе 1С, если он больше не используется?
Выполните скрипт: USE your_db_name; EXEC sys.sp_cdc_disable_db; Это удалит все системные таблицы CDC, схемы и задания агента.
Почему задание cdc.dbname_capture перестает успевать за транзакциями 1С?
При массовых операциях (например, проведение документов за период или групповое перепроведение) генерация лога опережает параметры maxtrans/maxscans по умолчанию. Отрегулируйте параметры задания через sp_cdc_change_job.
Влияет ли Simple Recovery Model на работу CDC?
Нет, CDC поддерживается и в Simple Recovery Model, однако механизм удержания виртуальных файлов журнала (VLF) до завершения сканирования CDC остается идентичным.