При работе с устаревшими, но все еще актуальными системами на базе 1С:Предприятие 7.7 в связке с MS SQL Server, администраторы часто сталкиваются с ситуацией, когда первый пользователь заходит в базу без проблем, а все последующие получают отказ с системным сообщением: «Доступ к базе на сервере возможен только из одного каталога информационной базы». Эта проблема блокирует коллективную работу и требует оперативного вмешательства.
Рассмотрим причины возникновения этой ошибки и разберем пошагово методы её устранения, основываясь на практическом опыте и особенностях взаимодействия 1С 7.7 с современными операционными системами и SQL-серверами.
Проанализируем механизм контроля подключений в 1С 7.7. Когда первый клиент подключается к SQL-базе, платформа записывает путь к каталогу информационной базы (где хранятся файлы .md и .usr) в специальную системную таблицу SQL под названием _1CSYSTEM. При попытке входа второго пользователя программа сравнивает его локальный путь к базе с тем, что уже записан в таблице. Если строки не совпадают хотя бы в одном символе, система выдает ошибку.
Что необходимо проверить:
Z:\1c_base\), а у другого через UNC-путь (например, \\Server\1c_base\), возникнет конфликт. Для массовой проверки и правки реестра подойдет Редактирование списка баз 1с 7.7 в реестре Windows.\\SERVER\Base и \\server\base могут считаться разными. Рекомендуется привести все записи к нижнему или верхнему регистру.\) в конце пути. Строка \\Server\Base не идентична строке \\Server\Base\.Решение: Настоятельно рекомендуем прописывать путь к базе у всех пользователей только в формате UNC (через имя сервера), избегая использования букв сетевых дисков. Это гарантирует идентичность строк при проверке платформой. Также полезен корректный Перенос 1С 7.7 базы на новое место с установкой заглушек.
Как показывает практика, часто причиной становится некорректная работа компонента BkEnd.dll (или сопутствующих библиотек Odbcsql.dll, Sqlsrv32.dll). Оригинальная платформа 1С 7.7 создавалась в эпоху SQL Server 6.5/7.0/2000. При использовании более новых версий SQL Server (2005, 2008 и выше) требуются специальные модифицированные (пропатченные) версии библиотек, решающие проблемы 1С 7.7 и Windows Vista/7 (x86, x64) и БД на MS SQL 2005+.
Рассмотрим ситуацию: система работала исправно, но после обновления Windows или перезагрузки сервера доступ стал эксклюзивным. Это может произойти из-за того, что защитные механизмы ОС (например, UAC или Windows Defender) восстановили оригинальные версии файлов или заблокировали работу патча.
Как устранить проблему:
C:\Program Files (x86)\1Cv77\bin\) находятся корректные версии библиотек для работы с SQL.Иногда после аварийного завершения работы последнего пользователя или сбоя сервера запись о пути к базе "застревает" в SQL-таблице. В этом случае даже первый входящий пользователь может получить ошибку, если его текущий путь отличается от "зависшего".
Для решения этой проблемы проанализируем состояние базы данных через SQL Management Studio. Мы можем принудительно очистить информацию о предыдущих подключениях. Для этого выполним следующий SQL-запрос:
-- Очистка системной таблицы для сброса путей к информационной базе
DELETE FROM _1CSYSTEM
Важно: Перед выполнением данной операции убедитесь, что все пользователи действительно вышли из программы и процессы 1cv7.exe завершены на всех терминальных серверах и рабочих станциях.
Выясним, могут ли системные процессы SQL влиять на доступ. Системные процессы, занимающиеся сбросом страниц данных на диск (checkpoint) или фоновой записью, обычно не являются причиной данной ошибки. Однако, стоит обратить внимание на права учетной записи, под которой происходит подключение.
Хотя владельцем базы (db_owner) не обязательно должен быть именно sa, пользователь, под которым 1С подключается к SQL, должен иметь достаточные права для записи в таблицу _1CSYSTEM. Если прав недостаточно, 1С не сможет корректно обновить путь при входе, что вызовет непредсказуемое поведение системы защиты.
Подведем итог и составим план действий для восстановления многопользовательского доступа:
\\ИмяСервера\ПапкаБазы..lck) в каталоге информационной базы, если они остались._1CSYSTEM через SQL-запрос.BkEnd.dll или заменить его на проверенную версию, совместимую с вашей версией SQL Server.Соблюдение этих шагов позволяет в большинстве случаев устранить проблему эксклюзивного доступа и вернуть систему в штатный режим работы.