Что делать при ошибке «База данных не найдена на сервере баз данных» в 1С?

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

При выполнении ресурсоемких операций в клиент-серверном режиме — например, при массовом перепроведении документов или запуск тяжелых обработок — пользователи 1С могут столкнуться с внезапной ошибкой: «База данных не найдена. База данных отсутствует в сервере баз данных». Характерная особенность этой проблемы заключается в том, что после перезапуска программы 1С снова успешно подключается к СУБД и продолжает работу до следующего сбоя.

Разберем подробно причины возникновения этой ошибки и проанализируем шаги, необходимые для её полного устранения на сервере СУБД MS SQL Server Express.

Анализ причин возникновения ошибки

Выясним, почему сервер СУБД теряет базу данных во время выполнения тяжелых монопольных операций. На основе анализа системных логов и настроек SQL Server выделяются три основные причины:

  1. Включенный режим AUTO_CLOSE в СУБД: В бесплатных редакциях MS SQL Server Express параметр AUTO_CLOSE по умолчанию включен. Когда сервер 1С кратковременно освобождает все соединения к базе, СУБД автоматически выгружает её из памяти. При повторном обращении 1С сервер SQL начинает процесс инициализации (запись в логах Starting up database), и платформа 1С выдает ошибку по таймауту, не успев дождаться отклика.
  2. Ограничения размера базы данных в MS SQL Server Express: Бесплатная версия Express имеет жесткие лимиты на размер файла данных MDF (в зависимости от версии — от 4 ГБ до 10 ГБ). Если при проведении документов база распухает и достигает предельного объема, СУБД блокирует дальнейшую запись и сбрасывает подключения.
  3. Задержки при авторасширении файлов (Autogrow): Если для файлов MDF и LDF настроен прирост в процентах, то при интенсивной записи дисковая подсистема замораживает работу базы на время выделения нового пространства. Платформа 1С расценивает эту паузу как отвал базы данных.

Шаг 1. Отключение параметра AUTO_CLOSE

Проанализируем журнал событий SQL Server. Если в логах регулярно встречается сообщение Starting up database, необходимо отключить режим автоматического закрытия. Для этого выполним специальный скрипт T-SQL в среде SQL Server Management Studio (SSMS).

Откроем окно создания запроса и выполним следующую команду:

ALTER DATABASE [имя_вашей_базы] SET AUTO_CLOSE OFF;

После выполнения данной команды SQL Server перестанет выгружать базу данных из оперативной памяти при временном отсутствии активных сеансов, что исключит задержки на повторный запуск.

Шаг 2. Проверка размеров файлов и лимитов SQL Server Express

Посмотрим на объем базы данных. В MS SQL Server Express учитывается размер основного файла данных (.mdf), тогда как файл журнала транзакций (.ldf) в лимит 10 ГБ не входит.

Проверим текущий размер файлов через SQL Server Management Studio:

  1. Откроем контекстное меню рабочей базы данных и перейдем в «Свойства» (Properties).
  2. Перейдем на закладку «Файлы» (Files).
  3. Проанализируем размеры файлов с расширениями .mdf и .ldf.

Если размер файла .mdf приближается к 10 ГБ, стандартная редакция Express перестанет обслуживать транзакции записи. В таком случае рассмотрим следующие варианты решения:

Шаг 3. Настройка параметров авторасширения файлов

Рассмотрим параметры роста файлов базы данных. По умолчанию прирост файлов часто установлен в процентах (например, 10%), что при больших объемах приводит к колоссальным задержкам на дисковый ввод-вывод.

Изменим параметры авторасширения файлов MDF и LDF на фиксированный размер:

  1. В свойствах базы данных на вкладке «Файлы» нажмем на кнопку с тремя точками в колонке «Авторасширение / Ограничение размера» (Autogrowth / Maxsize).
  2. Переключим параметр с процентов на «В мегабайтах» (In Megabytes).
  3. Установим фиксированный прирост, например, 128 МБ или 256 МБ для файла данных и файла журнала транзакций.

Дополнительно рекомендуем перевести модель восстановления базы данных в режим SIMPLE (Простая), если вам не требуется поминутное восстановление состояния из журнала транзакций. Это предотвратит неконтролируемый рост файла .ldf при массовом перепроведении документов.

ALTER DATABASE [имя_вашей_базы] SET RECOVERY SIMPLE;

Шаг 4. Оптимизация ресурсоемких обработок в 1С

Проанализируем сам процесс перепроведения документов. Выполнение групповой обработки в рамках одной бесконечной транзакции вызывает колоссальную нагрузку на tempdb и журнал транзакций СУБД. При нехватке ресурсов рабочий процесс 1С (rphost) может аварийно завершаться, из-за чего пользователи видят сообщение о пропавшей базе.

При обработке большого массива документов рекомендуем разбивать транзакции на небольшие порции (например, производить вызов ЗафиксироватьТранзакцию() каждые 100–500 документов). Это позволит СУБД своевременно освобождать временные таблицы и блокировки.

← На главную