Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

MSSQL_ERROR_9503 1С:Предприятие и СУБД

MSSQL Error 9503: The transaction log cannot be truncated because of pending CDC scan

Обновлено: 25.08.2026 · Официальная документация ↗
  • Файл журнала транзакций (.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);
💡 Практика специалистов: Если в 1С включен CDC для интеграции с внешними шинами данных (Kafka, RabbitMQ, DWH), обязательно выносите LDF файл на отдельный высокопроизводительный NVMe массив, так как двойное чтение/запись лога создает колоссальную нагрузку на дисковую очередь.

Частые вопросы (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 остается идентичным.

Полезные материалы
Рекомендуем