При работе с базами данных 1С:Предприятие 8.3 на платформе SQL администраторы часто сталкиваются с досадной проблемой: при попытке выполнить стандартную выгрузку информационной базы в файл .dt через Конфигуратор возникает сообщение «Ошибка разделенного доступа к информационной базе». Ситуация осложняется тем, что даже если в базе нет активных пользователей, система фиксирует наличие неких фоновых процессов, которые препятствуют получению монопольного доступа.
В этой статье мы подробно разберем, почему возникают «призрачные» сеансы, как их корректно завершить и какие альтернативные инструменты существуют для создания резервных копий, когда стандартный метод в Конфигураторе дает сбой. Мы проанализируем ситуацию на примере конфигурации Розница 2.3, но данные методы применимы практически ко всем современным решениям на платформе 8.3.
Для выполнения операции выгрузки в .dt платформе 1С требуется монопольный доступ. Это означает, что в базе не должно быть ни одного активного сеанса (включая сеансы самого администратора, кроме текущего) и ни одного фонового задания. Основными виновниками блокировки обычно становятся:
Рассмотрим пошагово методы решения этой задачи, от простых к более продвинутым.
Начиная с современных версий платформы 8.3, 1С предоставляет мощный инструмент — автономный сервер и утилиту администрирования ibcmd.exe. Ее преимущество заключается в том, что она может работать с базой данных напрямую, минуя запуск тяжелого интерфейса Конфигуратора, что часто позволяет избежать автоматического запуска «лишних» фоновых процессов.
Разберем пример команды для выгрузки базы. Для этого нам понадобится открыть командную строку (cmd) от имени администратора и перейти в каталог bin установленной платформы.
"c:\Program Files\1cv8\8.3.16.1063\bin\ibcmd.exe" infobase dump --db-server=ИмяВашегоСервера --dbms=MSSQLServer --db-name=ИмяБазы --db-user=sa --db-pwd=ПарольSQL "C:\Backups\Backup.dt"
В данной команде мы используем следующие параметры:
infobase dump — команда на создание выгрузки.--db-server — адрес вашего SQL-сервера.--dbms — тип используемой СУБД (например, MSSQLServer или PostgreSQL).--db-name — имя базы данных непосредственно на SQL-сервере.--db-user и --db-pwd — учетные данные администратора базы данных SQL (обычно sa).Важный нюанс: при использовании ibcmd рекомендуется предварительно остановить службу Агент сервера 1С:Предприятия, чтобы полностью исключить влияние менеджера кластера на базу во время выгрузки.
Часто ошибка возникает из-за того, что администраторы устанавливают блокировку сеансов, но не учитывают уже запущенные процессы. Проанализируем правильную последовательность действий:
Admin123.1C:Enterprise 8.3 Server Agent и, для надежности, службу SQL Server. Это гарантированно разорвет все сетевые транзакции и очистит кэш соединений./UC Admin123. Для КОРП-систем также актуально внешнее управление сеансами.После этого выгрузка должна пройти успешно, так как новые задания не смогут запуститься благодаря установленным флагам блокировки.
Если в Конфигураторе при каждом входе появляется «Системное фоновое задание», скорее всего, это ОбновлениеИндексаППС. Платформа инициирует его автоматически при обнаружении изменений в данных или метаданных.
Проанализируем, как его отключить:
После отключения этой функции системные фоновые задания перестанут инициироваться платформой самостоятельно в фоновом режиме.
Бывают ситуации, когда информация о «фантомных» фоновых заданиях сохраняется в файлах состояния сервера 1С. В этом случае даже перезапуск служб не помогает, так как при старте сервер пытается восстановить предыдущее состояние процессов.
Рассмотрим процесс очистки:
1C:Enterprise 8.3 Server Agent.srvinfo (обычно он находится в C:\Program Files\1cv8\srvinfo).reg_1541).snccntxt — в ней хранятся данные о сеансах. Для клиентских ПК также полезна очистка кэша батником.Если проблема кроется в блокировках на уровне СУБД (например, зависшая транзакция от стороннего ПО для бэкапа), можно перевести базу SQL в однопользовательский режим. Рассмотрим выполнение этой операции через SQL Server Management Studio (SSMS):
USE master;
ALTER DATABASE [ИмяВашейБазы]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
Команда ROLLBACK IMMEDIATE принудительно оборвет все существующие транзакции и закроет соединения. После этого база будет принимать только одно подключение. Выполнив выгрузку (лучше через ibcmd, так как Конфигуратор может создать несколько соединений), не забудьте вернуть базу в многопользовательский режим:
ALTER DATABASE [ИмяВашейБазы]
SET MULTI_USER;
Для предотвращения подобных проблем в будущем мы рекомендуем придерживаться следующих правил при обслуживании баз 1С:
/UC) при регламентных работах..bak файлов). Это работает быстрее, надежнее и не требует выгона пользователей или монопольного доступа. Выгрузку в .dt стоит оставить только для целей разработки или перехода между разными СУБД.Таким образом, мы выяснили, что «Ошибка разделенного доступа» — это не приговор, а следствие работы автоматизированных механизмов платформы. Использование утилиты ibcmd и грамотное управление блокировками в консоли кластера позволяют решить эту задачу максимально быстро и эффективно.