При работе с крупными информационными базами в клиент-серверном варианте администраторы часто сталкиваются с ситуацией, когда стандартная операция выгрузки данных в файл .dt завершается аварийно. Наиболее распространенные симптомы — сообщения о нехватке места на диске C: (даже если визуально места достаточно) или внезапный разрыв соединения с сервером. В этой статье мы подробно разберем механизмы работы сервера 1С:Предприятия при выгрузке данных, выясним причины «прожорливости» системы к дисковому пространству и научимся правильно настраивать кластер для успешного создания архивов.
Первым делом проанализируем ситуацию: почему при объеме базы в SQL около 8 Гб система требует более 45 Гб свободного места? Важно понимать, что процесс формирования .dt — это не простое копирование данных, а сложная процедура сериализации. Рассмотрим подробнее, как это происходит:
rphost) начинает последовательно считывать данные из таблиц SQL-сервера.TEMP пользователя, от имени которого запущена служба 1C:Enterprise 8.3 Server Agent (обычно это USR1CV8).C:\Program Files\1cv8\srvinfo..dt.Таким образом, если на диске C: свободно 45 Гб, а временные данные в несжатом виде занимают 50 Гб, система выдаст ошибку. Рекомендация: для стабильной выгрузки базы объемом 8–10 Гб желательно иметь не менее 100–150 Гб свободного места на системном диске.
Если расширить диск C: невозможно, мы можем перенаправить потоки временных файлов на другой диск. Рассмотрим, как это сделать правильно.
Во-первых, изменим путь к рабочему каталогу кластера. Для этого нам потребуется модифицировать параметры запуска службы ragent. Разберем по шагам:
ImagePath.-d и укажем путь к новой папке на диске с большим объемом памяти, например: "C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1C_Base_Data".Во-вторых, перенесем переменные TEMP и TMP для учетной записи сервера. Для этого нужно зайти в свойства системы, выбрать «Дополнительные параметры системы» -> «Переменные среды» и изменить пути для пользователя USR1CV8 на быстрый диск с достаточным объемом.
Часто после решения проблемы с местом возникает следующая преграда: разрыв соединения. Выясним причину этого поведения. Это происходит из-за защитных механизмов кластера 1С, которые призваны не допустить падения всего сервера при выполнении тяжелых задач.
Посмотрим на настройки в консоли администрирования кластера серверов 1С. Нас интересуют параметры рабочего процесса:
rphost будет убит менеджером кластера. При выгрузке больших баз этот лимит часто достигается.Для успешного завершения операции попробуем временно увеличить эти показатели или установить их в значение 0 (без ограничений) на период выполнения выгрузки. Для быстрой проверки текущих лимитов и параметров кластера можно использовать инструмент для чек-апа настроек сервера 1С.
Как отметил автор темы, блокировка регламентных заданий помогла успешно завершить процесс. Разберем, почему это важно. В процессе выгрузки сервер 1С активно обращается ко всем таблицам базы. В это же время могут запуститься РегламентныеЗадания, такие как:
Эти процессы создают дополнительную нагрузку на дисковую подсистему и оперативную память, а также могут устанавливать блокировки на таблицы. В условиях дефицита ресурсов это приводит к тому, что рабочий процесс rphost «вылетает» по таймауту или нехватке памяти. Совет: перед началом выгрузки в консоли кластера установите галочку «Блокировка регламентных заданий включена» в свойствах информационной базы.
Если даже при наличии места и отсутствии лимитов ошибка сохраняется, велика вероятность логического повреждения таблиц. Проанализируем ситуацию с точки зрения целостности. Перед выгрузкой рекомендуется выполнить следующие действия:
ТестированиеИИсправление (ТиИ) в Конфигураторе (минимум — проверку логической целостности).
DBCC CHECKDB ('Имя_Вашей_Базы') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Важно помнить, что выгрузка в .dt не является полноценным бэкапом для SQL-баз. Профессиональный подход подразумевает использование средств СУБД. Рекомендуем настроить регулярное создание файлов .bak средствами MS SQL Server или PostgreSQL. Это работает значительно быстрее, не требует огромного количества временного места на диске C: и позволяет восстановить базу на любой момент времени при наличии логов транзакций. Для решения этой задачи можно использовать скрипты для автоматизации резервного копирования и обслуживания баз на MS SQL Server.
Используйте формат .dt только для конкретных целей: переноса базы между разными СУБД или смены серверной архитектуры на файловую. В остальных случаях средства SQL гораздо надежнее и эффективнее.