При настройке автоматического резервного копирования клиент-серверных баз 1С системные администраторы часто сталкиваются с ошибкой: «Ошибка исключительной блокировки информационной базы». Эта проблема возникает при попытке выгрузить информационную базу в файл формата .dt с помощью командной строки или сторонних утилит, таких как Effect Saver.
Разберем подробно причины возникновения этой ошибки, выясним, почему регулярная выгрузка в .dt не подходит для рабочих баз, и рассмотрим правильные варианты создания резервных копий средств СУБД MS SQL Server.
Проанализируем механику работы платформы «1С:Предприятие 8.3» в клиент-серверном режиме. Выгрузка информационной базы в файл .dt (команда DumpIB) требует строго монопольного доступа к базе данных. Если в системе активен хотя бы один сеанс, выгрузка завершается ошибкой.
Попытка решить проблему путем перезапуска службы сервера 1С через батник (net stop / net start) перед созданием бэкапа часто не дает результата по следующим причинам:
1C:Enterprise 8.3 Server Agent тонкие и толстые клиенты на ПК пользователей не завершают работу, а пытаются восстановить соединение в течение таймаута.rphost.exe мгновенно инициализирует фоновые задания (например, полнотекстовый поиск или регламентные обработки конфигурации), которые занимают сеанс в базе.Создание файлов .dt предназначено исключительно для переноса конфигурации и данных между различными СУБД (например, при переходе с файлового режима на MS SQL или PostgreSQL) или разворачивания тестовых баз. Использование этого метода в качестве основного бэкапа рабочей базы не рекомендуется по нескольким причинам:
.dt может успешно создаться, но при попытке развернуть его обратно возникнет ошибка (например, из-за превышения объема оперативной памяти при распаковке таблиц или проблем с индексами).Резервное копирование средств СУБД MS SQL Server выполняется на уровне файлов базы данных (файлов .mdf и .ldf) и **не требует монопольного режима**. MS SQL создает корректную точечную копию базы прямо во время работы пользователей и выполнения фоновых заданий 1С.
Для редакций MS SQL Server Standard или Enterprise настройка выполняется через планы обслуживания (Maintenance Plans) в интерфейсе SQL Server Management Studio (SSMS):
.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"
Программа Effect Saver умеет делать бэкапы двумя разными способами:
Если файл .dt необходим для регулярного создания локальной тестовой базы, перезапуска службы 1С недостаточно. Потребуется программно установить блокировку начала сеансов и завершить существующие соединения.
Для корректного завершения сеансов используется консольная утилита администрирования кластера 1С — rac.exe (в связке со службой ras.exe) или программное COM-соединение v83.COMConnector.
Посмотрим на алгоритм правильной подготовки базы к выгрузке:
БлокировкаУстановкиСоединенийВключена = Истина и задать КодРазрешения для администратора..dt с параметром /UC <КодРазрешения>.Пример командной строки выгрузки с кодом разрешения:
"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 должна применяться только для служебных целей и разработки.