При выгрузке информационной базы через Конфигуратор в файл выгрузки (.dt) администраторы и разработчики нередко сталкиваются с ошибкой: «Удаленный хост принудительно разорвал существующее подключение. line=1584...». Особенно часто данный сбой проявляется после массовой загрузки в базу двоичных данных (изображений, файлов номенклатуры, сканов документов), из-за чего размер базы существенно увеличивается. Разберем детально, почему возникает эта ошибка и какими способами можно восстановить нормальную выгрузку данных.
Проанализируем техническую сторону процесса. Сообщение о разрыве соединения со стороны удаленного хоста означает, что рабочий процесс сервера 1С (rphost.exe), выполнявший операцию сериализации и упаковки данных, аварийно завершился или был принудительно перезапущен кластером. Выделим основные факторы, приводящие к такому поведению:
ХранилищеЗначения (например, в справочнике ХранилищеДополнительнойИнформации), попытка платформы распаковать или сериализовать такой блок данных приводит к критическому исключению и падению рабочего процесса..dt сервер выполняет архивацию таблиц в оперативной памяти и во временных файлах. Если используется 32-разрядный сервер 1С:Предприятия или на 64-разрядном сервере исчерпан объем свободной памяти, процесс падает.%TEMP% как на стороне сервера, так и на клиенте.Рассмотрим ситуацию, когда в базе содержатся поврежденные файлы или изображения. Попытка выгрузить их стандартными средствами вызывает системное исключение. Начнем с регламентного тестирования и исправления.
Выполним тестирование базы в Конфигураторе через меню Администрирование > Тестирование и исправление..., выбрав проверки логической и ссылочной целостности, а также реиндексацию таблиц. Если тестирование также аварийно завершается, перейдем к программному поиску битых элементов.
Для поиска проблемных записей воспользуемся перебором элементов справочника с получением объекта. При обращении к поврежденному объекту метод ПолучитьОбъект() вызовет исключение, которое мы можем перехватить:
Выборка = Справочники.ХранилищеДополнительнойИнформации.Выбрать();
Пока Выборка.Следующий() Цикл
Попытка
Объект = Выборка.ПолучитьОбъект();
ДвоичныеДанные = Объект.Хранилище.Получить();
Исключение
Сообщить("Обнаружен поврежденный элемент: " + Строка(Выборка.Ссылка) + " | Ошибка: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Если проблемный элемент обнаружен, но его невозможно удалить штатными средствами из-за внутренней ошибки структуры данных, очистку соответствующей записи выполняют на уровне таблиц СУБД (MS SQL Server) или путем полной перезаписи значения поля в пустую структуру.
Разберем параметры кластера, которые могут прерывать процесс длительной выгрузки. Откроем консоль администрирования серверов 1С:Предприятия и проверим свойства кластера:
0 (снятие ограничений на время выгрузки).0, чтобы рабочий процесс не завершался регламентно прямо посреди формирования файла.После корректировки настроек перезапустим службу 1C:Enterprise Server Agent и повторим процедуру выгрузки базы.
Проанализируем влияние сетевых задержек и межсетевых экранов. При передаче больших объемов данных между клиентским компьютером и сервером 1С сетевое оборудование или антивирусное ПО может принудительно закрыть длительную TCP-сессию. Чтобы исключить этот фактор:
localhost или сетевое имя текущей машины.AppData\Local\Temp) доступно достаточно свободного места — не менее двукратного размера базы данных..dt в локальную папку на сервере.Важно помнить, что механизм выгрузки в файл .dt предназначен в первую очередь для переноса данных между различными СУБД или развертывания тестовых контуров. Для регулярного резервного копирования баз большого объема на MS SQL Server следует использовать стандартные средства СУБД.
Создание резервной копии (Native Backup) средствами SQL выполняется значительно быстрее, не нагружает процесс rphost сериализацией бинарных данных и полностью исключает ошибки разрыва пользовательских сессий в Конфигураторе.
Для предотвращения подобных ошибок в будущем рекомендуется перевести хранение присоединенных файлов, сканов и изображений из базы данных на тома на диске (внешние файловые хранилища). Это разгрузит таблицы СУБД от тяжелых LOB-полей, стабилизирует потребление оперативной памяти процессом rphost и ускорит работу всех сервисных процедур 1С.