Почему возникает ошибка исключительной блокировки при резервном копировании 1С и как правильно настроить бэкап MS SQL?

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

При настройке автоматического резервного копирования клиент-серверных баз 1С системные администраторы часто сталкиваются с ошибкой: «Ошибка исключительной блокировки информационной базы». Эта проблема возникает при попытке выгрузить информационную базу в файл формата .dt с помощью командной строки или сторонних утилит, таких как Effect Saver.

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

Причины ошибки исключительной блокировки

Проанализируем механику работы платформы «1С:Предприятие 8.3» в клиент-серверном режиме. Выгрузка информационной базы в файл .dt (команда DumpIB) требует строго монопольного доступа к базе данных. Если в системе активен хотя бы один сеанс, выгрузка завершается ошибкой.

Попытка решить проблему путем перезапуска службы сервера 1С через батник (net stop / net start) перед созданием бэкапа часто не дает результата по следующим причинам:

  1. Автоматическое переподключение пользователей: Клиентские приложения 1С имеют встроенные механизмы отказоустойчивости. При перезапуске службы 1C:Enterprise 8.3 Server Agent тонкие и толстые клиенты на ПК пользователей не завершают работу, а пытаются восстановить соединение в течение таймаута.
  2. Запуск фоновых и регламентных заданий: Сразу после старта службы 1С рабочий процесс rphost.exe мгновенно инициализирует фоновые задания (например, полнотекстовый поиск или регламентные обработки конфигурации), которые занимают сеанс в базе.
  3. Зависшие соединения: Сеансы пользователей или сетевые соединения могут не корректно освобождаться на стороне MS SQL Server.

Почему выгрузка в файл .dt не подходит для резервного копирования

Создание файлов .dt предназначено исключительно для переноса конфигурации и данных между различными СУБД (например, при переходе с файлового режима на MS SQL или PostgreSQL) или разворачивания тестовых баз. Использование этого метода в качестве основного бэкапа рабочей базы не рекомендуется по нескольким причинам:

  1. Требование монопольного режима: Необходимость завершать работу всех пользователей и останавливать регламентные задания.
  2. Риск невосстановимости: Файл .dt может успешно создаться, но при попытке развернуть его обратно возникнет ошибка (например, из-за превышения объема оперативной памяти при распаковке таблиц или проблем с индексами).
  3. Высокая нагрузка на сервер: Процесс архивации средствами платформы 1С требует значительных вычислительных ресурсов по сравнению с нативным бэкапом СУБД.

Способ 1. Создание резервной копии средствами MS SQL Server (Рекомендуемый)

Резервное копирование средств СУБД MS SQL Server выполняется на уровне файлов базы данных (файлов .mdf и .ldf) и **не требует монопольного режима**. MS SQL создает корректную точечную копию базы прямо во время работы пользователей и выполнения фоновых заданий 1С.

Для редакций MS SQL Server Standard или Enterprise настройка выполняется через планы обслуживания (Maintenance Plans) в интерфейсе SQL Server Management Studio (SSMS):

  1. Откроем MS SQL Server Management Studio и подключимся к экземпляру сервера.
  2. В дереве объектов перейдем в раздел «Управление» (Management) -> «Планы обслуживания» (Maintenance Plans).
  3. Создадим новый план обслуживания и добавим задачу «Резервное копирование базы данных (полное)» (Back Up Database Task).
  4. Настроим расписание выполнения и укажем директорию для сохранения файлов с расширением .bak.

Если используется бесплатная редакция MS SQL Server Express, в ней отсутствует агент SQL Server (SQL Server Agent). В этом случае резервное копирование автоматизируется через стандартный Планировщик заданий Windows с использованием утилиты sqlcmd.exe.

Рассмотрим пример T-SQL скрипта для полного бэкапа базы:


BACKUP DATABASE [Имя_Базы_1С]
TO DISK = N'D:\Backup\Имя_Базы_1С.bak'
WITH COMPRESSION, INIT, STATS = 10;

Для автоматизации запуска скрипта в Планировщике заданий Windows создается задача со следующей командой:


sqlcmd -S SERVERNAME\SQLEXPRESS -U sa -P Password123 -Q "BACKUP DATABASE [Имя_Базы_1С] TO DISK = N'D:\Backup\Имя_Базы_1С.bak' WITH COMPRESSION, INIT"

Способ 2. Настройка Effect Saver 3 для работы с MS SQL

Программа Effect Saver умеет делать бэкапы двумя разными способами:

  1. Выгрузка информационной базы (dt): Требует завершения всех сеансов. Применяется в основном для файловых баз.
  2. Дамп базы средствами MS SQL: В настройках задачи Effect Saver необходимо выбрать тип подключения к базе как MS SQL Server и указать параметры подключения к СУБД. В этом режиме Effect Saver обращается напрямую к SQL-серверу и выполняет команду резервного копирования без блокировки сеансов 1С.

Способ 3. Завершение сеансов и блокировка базы для получения .dt (если требуется для разворачивания тестов)

Если файл .dt необходим для регулярного создания локальной тестовой базы, перезапуска службы 1С недостаточно. Потребуется программно установить блокировку начала сеансов и завершить существующие соединения.

Для корректного завершения сеансов используется консольная утилита администрирования кластера 1С — rac.exe (в связке со службой ras.exe) или программное COM-соединение v83.COMConnector.

Посмотрим на алгоритм правильной подготовки базы к выгрузке:

  1. Установить параметр базы данных БлокировкаУстановкиСоединенийВключена = Истина и задать КодРазрешения для администратора.
  2. Завершить все активные пользовательские сеансы и фоновые задания через кластер 1С.
  3. Запустить выгрузку базы в файл .dt с параметром /UC <КодРазрешения>.
  4. Снять блокировку установки соединений после завершения выгрузки.

Пример командной строки выгрузки с кодом разрешения:


"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /S "Server1C\BaseName" /N "Admin" /P "Pass" /UC "BackupCode" /DumpIB "D:\Backups\Base.dt"

Итоги

Для обеспечения надежности данных и бесперебойной работы пользователей в клиент-серверном режиме 1С следует придерживаться базового правила: резервное копирование рабочей базы данных должно выполняться средствами СУБД MS SQL Server (в файл .bak). Выгрузка в формат .dt должна применяться только для служебных целей и разработки.

← На главную