Проверка базы идёт часами: как безопасно прервать её и что сделать после
Содержание
Остановить тестирование
и исправление в 1С можно только одним надёжным способом: завершить сеанс Конфигуратора, в котором запущена проверка. В файловой базе это процесс 1cv8.exe в Диспетчере задач. В клиент-серверной — ещё и сеанс в консоли кластера, а при долгом откате — запрос в СУБД.
Типичная ситуация: вечером администратор запустил Администрирование → Тестирование и исправление... в Конфигураторе, утром пришли бухгалтеры, а в строке состояния всё та же таблица. Прервать проверку можно, но правильно — сначала понять, на каком этапе она стоит, и только потом действовать. Иначе можно получить базу, которая не откроется.
Сначала убедитесь, что проверка действительно зависла
Долгая проверка и зависшая проверка — разные вещи. Реиндексация или сжатие таблицы регистра на 30–50 ГБ может идти несколько часов, и прервать её на 90% обиднее всего.
Что смотреть до любых действий:
- 📊 Строку состояния Конфигуратора. Там видно текущий этап и имя таблицы. Запишите, что там написано, и проверьте снова через 10–15 минут.
- 💽 Диск. Откройте
resmon.exe(Монитор ресурсов) → вкладка «Диск». Если процесс1cv8.exe(файловая база) или процесс СУБД (sqlservr.exe,postgres.exe) читает и пишет мегабайты в секунду — работа идёт. - 🧠 Процессор. На сервере 1С посмотрите загрузку процессов
rphost.exe. Постоянная нагрузка одного ядра — признак работы, а не зависания. - 🗄️ Запрос в СУБД. Для клиент-серверной базы самый точный ответ даёт сама СУБД — запросы приведены ниже.
Этапы проверки и чем опасно прерывание на каждом
| Этап (флажок в окне режима) | Что делает | Риск при прерывании |
|---|---|---|
| Реиндексация таблиц | Перестраивает индексы | Низкий: повторная реиндексация всё исправит |
| Проверка логической целостности | Читает структуры данных | Низкий: данные не меняются |
| Проверка ссылочной целостности | Ищет «битые» ссылки, создаёт объекты или очищает ссылки | Средний: часть ссылок уже исправлена |
| Пересчёт итогов | Пересчитывает итоги регистров | Средний: итоги нужно досчитать |
| Сжатие таблиц | Копирует таблицы без пустых страниц | Высокий в файловой базе |
| Реструктуризация таблиц | Пересоздаёт таблицы базы | Самый высокий: прерывать только в крайнем случае |
Если проверка стоит на реструктуризации или сжатии в файловой базе и диск ещё работает — лучше дождаться конца. Если диск молчит 30–40 минут, а процессор в нуле, это похоже на настоящее зависание.
Как прервать тестирование и исправление: завершение сеанса Конфигуратора
Режим запускается в монопольном доступе, поэтому, кроме вашего Конфигуратора, к базе никто не подключён. Это упрощает дело: обрывать чужую работу не придётся.
Если в базе остались фоновые задания или сеансы обмена, их завершение оборвёт обмен. Делайте это, когда пользователи предупреждены.
Шаг 1. Закройте Конфигуратор или завершите процесс
- Если Конфигуратор откликается на действия — попробуйте закрыть окно обычным способом и подтвердить выход.
- Если окно «Не отвечает» дольше получаса, а признаков работы нет — откройте Диспетчер задач (
Ctrl+Shift+Esc). - На вкладке «Подробности» найдите
1cv8.exe. Если процессов несколько, ориентируйтесь на столбец «Командная строка»: у Конфигуратора там будетDESIGNER. - Нажмите «Снять задачу».
Если проверку запускал планировщик заданий Windows через командную строку, сначала завершите задачу в taskschd.msc, иначе по расписанию она стартует снова.
Шаг 2. Освободите базу
После снятия процесса база не всегда сразу становится доступной.
- 📁 Файловая база в сетевой папке. На сервере с папкой откройте
compmgmt.msc→Общие папки → Открытые файлы. Если там висит1Cv8.1CD, закройте этот открытый файл. - 🖥️ Клиент-серверная база . Откройте консоль администрирования серверов 1С → кластер → информационная база → «Сеансы». Сеанс с приложением «Конфигуратор» удалите через контекстное меню.
Через утилиту rac то же самое делается командами:
rac cluster list
rac session list --cluster=<id кластера> --infobase=<id базы>
rac session terminate --cluster=<id кластера> --session=<id сеанса>
Если на кластере задан администратор, добавьте параметры авторизации — их список выдаёт rac help session.
Если «зависла» не проверка, а её запуск
Иногда режим даже не начинает работу: Конфигуратор ждёт монопольного доступа или показывает ошибку его установки. Значит, к базе кто-то подключён.
- 👥 Посмотрите активных пользователей: в Конфигураторе
Администрирование → Активные пользователи. - ⚙️ Фоновые задания и обмены тоже держат базу. На время проверки включите блокировку регламентных заданий в свойствах базы в консоли кластера.
- 🔌 Висящие сеансы пользователей, которые давно ушли, удалите в консоли кластера.
В этом случае останавливать нечего: закройте окно ожидания, освободите базу и запустите режим заново.
Транзакции СУБД: почему клиент-серверная база «не отпускает»
В клиент-серверной базе тяжёлую работу выполняет не Конфигуратор, а рабочий процесс сервера 1С и сама СУБД. Вы закрыли Конфигуратор, а сервер СУБД ещё несколько минут или часов дорабатывает либо откатывает начатую операцию.
Что успело зафиксироваться, останется в базе. Незавершённая операция откатится. Откат большой реиндексации или сжатия может длиться столько же, сколько сама операция.
MS SQL Server
Найдите активные запросы по базе (в SQL Server Management Studio):
SELECT session_id, status, command, percent_complete,
wait_type, start_time
FROM sys.dm_exec_requests
WHERE database_id = DB_ID('buh_base');
commandпокажет операцию:ALTER INDEX,UPDATE,KILLED/ROLLBACK.percent_completeдля откатов и операций с индексами показывает прогресс.
Если сеанс 1С уже удалён, а запрос продолжает выполняться, его можно прервать:
KILL 57; -- 57 = session_id из запроса выше
KILL 57 WITH STATUSONLY; -- прогресс отката
KILL не ускоряет откат. Он запускает его, и прервать откат уже нельзя. Не перезапускайте службу SQL Server во время отката: после старта база уйдёт в восстановление, и откат продолжится, только база при этом будет недоступна целиком.
PostgreSQL
SELECT pid, state, wait_event_type, query_start,
left(query, 120) AS query
FROM pg_stat_activity
WHERE datname = 'buh_base';
Сначала мягкая отмена запроса, при неудаче — завершение соединения:
SELECT pg_cancel_backend(12345); -- 12345 = pid
SELECT pg_terminate_backend(12345);
💡 Прежде чем снимать что-то в СУБД, удалите сеанс в консоли кластера 1С и подождите 5–10 минут. Часто рабочий процесс сам отменяет запрос, и вмешательство в СУБД не нужно.
Файловая база после прерывания: проверка файла 1Cv8.1CD
В файловой базе все данные лежат в одном файле 1Cv8.1CD, и запись в него идёт напрямую из процесса Конфигуратора. Если процесс снят посреди сжатия или реструктуризации, файл может остаться в несогласованном состоянии.
Порядок действий:
- Убедитесь, что никто не работает
с базой и процессов
1cv8.exeна компьютерах не осталось. - Скопируйте
1Cv8.1CDв отдельную папку — до любых исправлений. Это ваша страховка, если утилита сделает хуже. - Запустите утилиту проверки физической целостности
chdbfl.exe. Она лежит в папке установленной платформы:C:\Program Files\1cv8\<номер версии>\bin\. - Укажите путь к
1Cv8.1CD. Сначала запустите проверку без флажка «Исправлять обнаруженные ошибки». - Если ошибки найдены — повторите с этим флажком.
- Откройте базу в Конфигураторе и снова запустите тестирование и исправление, но только с нужными этапами.
Используйте chdbfl.exe той же версии платформы, на которой работает база. Утилита из другой версии может не понять формат файла.
Если и после chdbfl.exe база не открывается, верните последнюю резервную копию. Копия файла из шага 2 пригодится для попыток восстановления данных отдельно.
Ключи командной строки: запуск с ограничением времени и продолжением
Лучший способ не попадать в ситуацию «надо остановить» — запускать проверку пакетно, с лимитом времени. Для этого у 1cv8.exe есть режим /IBCheckAndRepair с параметрами:
| Ключ | Что делает |
|---|---|
-ReIndex | Реиндексация таблиц |
-LogIntegrity | Проверка логической целостности |
-LogAndRefsIntegrity | Логическая и ссылочная целостность |
-RecalcTotals | Пересчёт итогов |
-IBCompression | Сжатие таблиц |
-Rebuild | Реструктуризация таблиц |
-TestOnly | Только проверка, без исправлений |
-BadRefCreate / -BadRefClear / -BadRefNone | Битые ссылки: создать объекты, очистить, не менять |
-BadDataCreate / -BadDataDelete | Частично потерянные данные объектов: создать или удалить |
-TimeLimit:hhh:mm | Ограничение времени выполнения |
-UseStartPoint | Продолжить с места, где прервалась прошлая проверка |
Пример ночного запуска для клиент-серверной базы:
"C:\Program Files\1cv8\<номер версии>\bin\1cv8.exe" DESIGNER ^
/S "srv1c\buh_base" /N "Администратор" /P "пароль" ^
/IBCheckAndRepair -LogAndRefsIntegrity -RecalcTotals -BadRefNone ^
-TimeLimit:003:00 -UseStartPoint ^
/Out "D:\logs\check_buh.log" /DisableStartupDialogs
Для файловой базы вместо /S "сервер\база" укажите /F "D:\Bases\Buh".
Как это работает на практике: проверка идёт не больше трёх часов и аккуратно останавливается сама. На следующую ночь тот же запуск с -UseStartPoint продолжит с сохранённой точки. Ни Диспетчер задач, ни KILL не нужны.
💡 В окне режима в Конфигураторе актуальных версий платформы есть такие же настройки: ограничение по времени и продолжение прерванной проверки. Если ограничения нет, обновите платформу.
Как избежать зависаний при тестировании и исправлении
Большинство «зависаний» — это не сбой, а неправильно выбранный набор этапов для размера базы.
- 🎯 Ставьте только нужные флажки. Если ругается на итоги — запускайте пересчёт итогов, а не все шесть этапов разом.
- 🔍 Сначала режим «Только проверка». Он покажет масштаб проблем без изменений в базе. Решение об исправлении принимайте по его протоколу.
- 🗄️ Клиент-серверная база: обслуживание силами СУБД. Перестроение индексов и обновление статистики дешевле делать регламентными заданиями MS SQL или PostgreSQL. Тестирование и исправление оставьте для логических ошибок.
- 💾 Место на диске. Сжатие и реструктуризация создают копии таблиц. Держите свободного места не меньше размера базы.
- 🛡️ Антивирус. Исключите из проверки папку файловой базы и папки данных СУБД. Проверка на лету замедляет запись в разы.
- 🧪 Копия для экспериментов. На большой базе сначала прогоните режим на копии. Время выполнения на копии покажет, укладываетесь ли вы в ночное окно.
- ⏱️ Окно обслуживания. Включите блокировку начала сеансов в консоли кластера или в конфигурации (в БП 3.0:
Администрирование → Обслуживание → Блокировка работы пользователей), чтобы утром никто не упёрся в монопольный режим.
Перед любым запуском тестирования и исправления с исправлением ошибок нужна свежая резервная копия: выгрузка в .dt, копия 1Cv8.1CD или бэкап средствами СУБД.
Если база не открывается после прерванной проверки
Бывает, что после снятия процесса Конфигуратор пишет об ошибке формата потока или повреждении данных.
- Для файловой базы — пройдите
chdbfl.exe, как описано выше. - Запустите тестирование и исправление с флажками «Проверка логической целостности» и «Реиндексация таблиц». Это быстрые этапы.
- Если ошибка остаётся — очистите кэш клиента: запустите 1С с параметром
/ClearCacheили удалите папки кэша базы в%APPDATA%\1C\1cv8и%LOCALAPPDATA%\1C\1cv8. - Если не помогло — восстановите резервную копию и повторите проверку на копии, с ключом
-TimeLimit.
Частые вопросы
Сохранятся ли исправления, если прервать проверку на середине?
Можно ли работать в базе, пока идёт тестирование и исправление?
Почему после снятия процесса пишет, что монопольный режим установить нельзя?
Как понять, сколько осталось до конца проверки?
percent_complete в MS SQL. Для прогноза прогоните проверку на копии базы.