Как снять блокировку с сетевой файловой базы 1С и закрыть зависшие сеансы

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе администрирования и обслуживания файловых баз 1С:Предприятия специалисты часто сталкиваются с ситуацией, когда все пользователи завершили работу, однако файл базы данных 1Cv8.1CD или каталог с информационной базой остаются заблокированными. В результате невозможно выполнить обновление конфигурации, запустить утилиту тестирования и исправления chdbfl.exe, сделать резервную копию или переименовать каталог. Разберем причины возникновения таких блокировок, выясним, почему сторонние утилиты наподобие Unlocker не помогают при работе по сети, и рассмотрим корректные способы решения проблемы.

Почему утилита Unlocker не работает по сети

Проанализируем принцип работы утилит принудительного освобождения файлов. Программы класса Unlocker или IObit Unlocker функционируют на уровне драйверов и системных вызовов локальной операционной системы. Они перехватывают открытые файловые дескрипторы (handles) процессов, запущенных на том же компьютере, где установлена утилита.

Если база данных 1С размещена на удаленном компьютере или сервере в общей сетевой папке (SMB-ресурс), запустить локальный Unlocker с клиентского рабочего места и снять удаленную блокировку невозможно. Дескриптор открытого файла 1Cv8.1CD удерживается сетевой службой операционной системы удаленного компьютера (процессом System или службой LanmanServer). Поэтому снять такую блокировку можно только непосредственно на том компьютере, где физически расположен файл базы данных.

Причины зависания файловых дескрипторов и сеансов

Выясним, какие факторы приводят к удержанию блокировок в файловом режиме:

  1. Зависшие клиентские процессы: При аварийном закрытии программы, обрыве сетевого соединения (например, при нестабильной связи по Wi-Fi) или зависании тонкого клиента процесс 1cv8.exe или 1cv8c.exe на стороне пользователя может остаться в памяти и удерживать сетевую сессию.
  2. Служебные файлы блокировок: Платформа 1С создает временные файлы фиксации транзакций и сеансов (с расширениями .cfl, .pfl, 1Cv8tmp.*). При некорректном выходе эти файлы могут оставаться в каталоге базы и мешать повторному монопольному захвату.
  3. Процессы веб-серверов: Если база опубликована на веб-сервере (IIS или Apache), рабочий процесс веб-сервера (w3wp.exe или httpd.exe) постоянно держит файл 1Cv8.1CD открытым даже при отсутствии активных пользовательских запросов.
  4. Фоновые службы: Антивирусное ПО, службы резервного копирования, теневое копирование (VSS) или служба индексации файлов Windows могут сканировать базу и временно блокировать доступ.
  5. Фоновые задания платформы: В файловом варианте один из клиентских сеансов автоматически берет на себя роль исполнителя регламентных задач и продолжает фоновую обработку данных.

Опасность «горячего» копирования и сброса дескрипторов

Рассмотрим распространенную ошибку: попытку скопировать файл 1Cv8.1CD средствами проводника Windows во время работы пользователей или принудительно оборвать сетевое соединение в момент транзакции.

Платформа 1С сбрасывает данные на диск страницами. Если выполнить простое копирование занятого файла через проводник, получится неконсистентный слепок («грязное чтение»), так как часть страниц может находиться в процессе записи. Принудительный сброс дескриптора во время активной записи приводит к физическому разрушению внутренней структуры таблиц базы данных. Поэтому перед любыми манипуляциями необходимо корректно завершать сессии.

Способы корректного снятия блокировок средствами Windows

Разберем по шагам системные инструменты, позволяющие освободить файл базы данных на компьютере-хосте.

  1. Использование графической оснастки «Управление общими папками»:

    На компьютере, где расположена база (или удаленно при наличии прав администратора), нажимаем Win + R, вводим команду fsmgmt.msc и переходим в раздел Открытые файлы. Находим файл 1Cv8.1CD, нажимаем правой кнопкой мыши и выбираем пункт «Закрыть открытый файл».

  2. Использование командной строки (Openfiles):

    Для просмотра и отключения открытых файлов через командную строку Windows от имени администратора используем следующие команды:

    
    openfiles /query
    openfiles /disconnect /id <Номер_Сессии>
    
  3. Использование PowerShell:

    В современных версиях Windows Server и Windows 10/11 удобнее использовать встроенный модуль SMB:

    
    # Просмотр открытых файлов базы данных
    Get-SmbOpenFile | Where-Object {$_.Path -like "*1Cv8.1CD*"}
    
    # Принудительное закрытие дескриптора по ID
    Close-SmbOpenFile -FileId <ID_Файла> -Force
    
  4. Утилита Handle от Sysinternals:

    Если файл заблокирован локальным процессом, используем консольную утилиту Марка Руссиновича handle.exe:

    
    handle.exe 1Cv8.1CD
    handle.exe -c <ID_Дескриптора> -p <PID_Процесса> -y
    

Правильный порядок действий при повреждении базы

Проанализируем типовой регламент восстановления базы данных, если требуется проверка утилитой chdbfl.exe:

  1. Подключаемся к хосту с базой данных через удаленный рабочий стол (RDP) или запрашиваем содействие системного администратора.
  2. Проверяем Диспетчер задач на всех рабочих станциях и сервере, завершаем все зависшие процессы 1cv8.exe и 1cv8c.exe.
  3. С помощью fsmgmt.msc или PowerShell убеждаемся, что сетевые дескрипторы закрыты.
  4. Создаем полную резервную копию файла 1Cv8.1CD.
  5. Копируем файл базы данных на быстрый локальный SSD-диск рабочей станции администратора. Запускать утилиту chdbfl.exe по сети крайне не рекомендуется из-за низкой скорости и риска обрыва соединения.
  6. Выполняем проверку и исправление локальной копии с помощью chdbfl.exe.
  7. После успешного тестирования удаляем из каталога на сервере старый файл и служебные файлы блокировок (*.cfl), затем возвращаем исправленный 1Cv8.1CD на исходное место. Пути к базе у пользователей при этом менять не потребуется.

Рекомендации по исключению блокировок в будущем

Чтобы избежать повторения проблем с сетевыми блокировками файловых баз, рассмотрим надежные архитектурные решения:

  1. Публикация на веб-сервере (IIS / Apache): Пользователи подключаются к базе через тонкий клиент по протоколу HTTP/HTTPS. В этом случае сетевые папки SMB не используются, риск повреждения таблиц при сетевых сбоях исключается.
  2. Терминальный сервер (RDP): Все пользователи работают непосредственно на сервере, где расположен файл базы данных, что устраняет сетевые задержки SMB-протокола.
  3. Переход на клиент-серверный вариант (SQL): Использование СУБД (PostgreSQL, Microsoft SQL Server) полностью снимает проблему файловых блокировок и позволяет централизованно управлять соединениями через консоль кластера серверов 1С:Предприятия.
← На главную