Представим типичную ситуацию для системного администратора или программиста 1С: после праздников, выходных или планового обслуживания сервера одна из информационных баз перестает запускаться. При попытке входа пользователи видят критическую ошибку: «База данных не обнаружена. База данных отсутствует в сервере баз данных». При этом визуально в консоли MS SQL Management Studio база выглядит абсолютно здоровой, она находится в режиме Online, место на диске есть, а остальные базы на этом же экземпляре сервера работают в штатном режиме.
В этой статье мы подробно разберем, почему сервер приложений 1С «теряет» связь с СУБД, проанализируем последовательность шагов для восстановления работоспособности системы (что актуально и при работе на Astra Linux) без необходимости полной перезагрузки всего сервера.
Как показывает практика и сообщения опытных специалистов, самым быстрым и действенным способом является «переподключение» базы в консоли администрирования серверов 1С. Разберем этот процесс по шагам:
Проанализируем, почему это помогает. Информация о соответствии баз в 1С хранится в специальных конфигурационных файлах кластера (например, 1CV8Reg.lst). Иногда из-за сбоев питания или некорректного завершения процессов связь между внутренним идентификатором базы (GUID) и её физическим именем на SQL может нарушиться. Перерегистрация обновляет эти записи в реестре кластера.
Рассмотрим ситуацию, когда база физически на месте, но сервер 1С не может получить к ней доступ из-за проблем с авторизацией. Выясним причину в настройках безопасности SQL Server:
Security (Безопасность) -> Logins (Имена для входа).v8user или sa).db_owner.Иногда при переносе баз или восстановлении из бэкапа «слетает» привязка логина сервера к пользователю конкретной базы данных. В этом случае полезно выполнить SQL-запрос для восстановления связи:
USE [Имя_Вашей_Базы]
GO
EXEC sp_change_users_login 'Auto_Fix', 'Имя_Пользователя_1С'
GO
Одной из скрытых причин ошибки является специфическая настройка базы данных в MS SQL Server — AUTO_CLOSE. Если этот параметр включен (True), SQL Server закрывает базу и освобождает ресурсы сразу после того, как последний пользователь завершил сеанс.
Посмотрим на ситуацию со стороны 1С: когда первый пользователь (даже если настроено ограничение количества сеансов) пытается зайти в «спящую» базу, сервер приложений отправляет запрос к СУБД. Если база не успевает проснуться и инициализироваться вовремя, 1С выдает ошибку, что база не обнаружена. Разберем, как это исправить:
Auto Close и установим значение False.Проанализируем состояние владельца базы. Если база была восстановлена из бэкапа с другого сервера или создана пользователем, который впоследствии был удален из Active Directory, база может остаться без валидного владельца (Owner). Это часто блокирует доступ сервера приложений к метаданным.
Чтобы исключить эту проблему, рекомендуется явно назначить владельцем системную учетную запись sa. Рассмотрим, как это сделать с помощью скрипта:
USE [Имя_Вашей_Базы]
GO
EXEC sp_changedbowner 'sa'
GO
После выполнения этой команды статус базы обновится, и 1С сможет корректно идентифицировать её структуру.
Выясним причину, связанную с человеческим фактором. Если SQL Server настроен с параметром Case Sensitive (чувствительность к регистру), то для него «Base_1C» и «base_1c» — это две разные базы.
Разберем важные нюансы при заполнении параметров в консоли 1С:
Иногда проблема кроется в нестабильной работе протокола Named Pipes. Рекомендуется принудительно использовать TCP/IP для взаимодействия между сервером 1С и SQL.
Рассмотрим, как это проверить:
SQL Server Network Configuration -> Protocols for [Имя_Экземпляра].TCP/IP находится в состоянии Enabled.tcp:ServerName.Даже если консоль управления SQL показывает, что база активна, она может находиться в переходном состоянии (например, после неудачной попытки бэкапа). Попробуем выполнить команду принудительного включения:
ALTER DATABASE [Имя_Вашей_Базы] SET ONLINE;
Если база была в состоянии Suspect или Recovery Pending, эта команда либо вернет её в строй, либо выдаст конкретную ошибку в файлах логов SQL Server, которую можно будет диагностировать далее.
Подведем итог: в большинстве случаев ошибка «База данных не обнаружена» лечится простым удалением и добавлением записи в консоли кластера 1С (Решение 1). Если это не помогло, следует переходить к проверке прав пользователя db_owner и технических параметров базы, таких как AUTO_CLOSE и Ownership. Перезагрузка всего сервера является крайней мерой и обычно не требуется для решения данной проблемы.