Ошибка разделенного доступа к информационной базе при выполнении выгрузки в .dt или обновлении конфигурации является одной из самых неприятных проблем для администраторов 1С. Часто система сообщает о том, что сеанс работы уже занят, хотя в консоли активных пользователей 1С никого нет. Давайте разберем, почему это происходит и какими методами мы можем восстановить работоспособность нашей системы.
В первую очередь необходимо исключить влияние фоновых процессов. Даже если регламентные задания в консоли сервера кажутся отключенными, они могут блокировать таблицы базы данных.
Администрирование серверов 1С:Предприятия.Блокировка регламентных заданий включена.Соединения. Если вы видите активные соединения, не относящиеся к вашему сеансу конфигуратора, принудительно удалите их.Если это не помогло, попробуйте перезапустить службу Агент сервера 1С:Предприятие. Это принудительно очистит оперативную память рабочих процессов rphost.exe, которые часто удерживают «зависшие» соединения.
Бывают ситуации, когда сеанс пользователя или регламентное задание уже завершились в 1С, но на уровне MS SQL Server соединение осталось открытым. В таком случае 1С не может войти в монопольный режим.
Чтобы решить эту задачу, мы можем воспользоваться SQL Server Management Studio:
Management Studio и подключитесь к серверу БД.sp_who2, чтобы увидеть все активные процессы.KILL [ID_процесса].DETACH и ATTACH базы данных через SQL-менеджер — это принудительно сбрасывает все активные подключения к таблицам базы.Ошибка часто является следствием нехватки оперативной памяти или ограничений 32-битных систем. Если вы работаете на 32-разрядной версии сервера, система не может эффективно управлять памятью для больших конфигураций (таких как УПП или ERP).
Рассмотрим способы оптимизации:
Windows Server 2008, убедитесь, что в командной строке применены параметры для расширения адресного пространства:
bcdedit.exe /set increaseuserva 3072
bcdedit.exe /set pae forceenable
Иногда проблема кроется в самой базе данных. Наличие записей в таблице Config размером более 120 МБ может вызывать аварийное завершение операций. Выясним, как с этим работать:
Проверку конфигурации в конфигураторе, обязательно отметив флажок Проверка логической целостности..cf, загрузите ее в пустую базу и проверьте там. Если ошибка сохраняется, значит, «мусор» содержится в самой конфигурации поставщика.Config, размер которых превышает 120 МБ, перед обновлением или выгрузкой.Если стандартный конфигуратор отказывается выполнять выгрузку, попробуйте автоматизировать процесс с помощью командной строки. Это позволяет выполнять выгрузку более «чисто» с точки зрения взаимодействия с сервером.
Пример скрипта для автоматизации выгрузки:
"C:\Program Files\1cv82\8.2.19.83\bin\1cv8.exe" DESIGNER /S "ServerName\BaseName" /N "Admin" /P "Password" /DUMPIB "C:\Backup\Base.dt" /OUT "C:\Backup\Log.log" -NoTruncate
Использование параметра -NoTruncate и запуск под учетной записью администратора с заранее отключенными регламентными заданиями — это проверенный способ обойти блокировки интерфейса.
Подводя итог, можно сказать: ошибка разделенного доступа — это комплексное явление. Мы рекомендуем действовать пошагово: сначала отключаем фоновые задания, затем перезапускаем службу Агент сервера 1С, если не помогло — чистим зависшие процессы в MS SQL Server. Если проблема повторяется постоянно, значит, конфигурация требует оптимизации или переноса на 64-битный сервер. Не забывайте делать резервные копии средствами SQL Server, так как они гораздо менее требовательны к монопольному режиму работы, чем штатная выгрузка .dt.