При работе с крупными информационными базами на платформе 1С:Предприятие 8.3 системные администраторы часто сталкиваются с проблемой, когда процесс выгрузки в файл .dt прерывается через 40-60 минут после начала. При этом система выдает ошибку: «Соединение с сервером баз данных разорвано администратором» с кодом HRESULT=80004005. Разберем по шагам, почему это происходит и как настроить систему для стабильной работы — для повседневного контроля и администрирования подойдёт универсальный инструмент администрирования и мониторинга 1С.
Ошибка HRESULT=80004005 является общей и часто указывает на сетевые проблемы или нехватку ресурсов. Однако в контексте 1С и MS SQL Server ключевым моментом является упоминание Named Pipes Provider. Это говорит о том, что система пытается использовать протокол именованных каналов, который менее стабилен при длительных транзакциях, чем TCP/IP. Чтобы лучше разобраться в происходящем, можно проанализировать SQL сервер глазами 1С-ника, изучив текущие запросы и ожидания.
Проанализируем текущие соединения с помощью SQL-запроса:
SELECT session_id, net_transport
FROM sys.dm_exec_connections
Если в результате запроса мы видим тип транспорта Named Pipes, это первый кандидат на исправление. Длительная выгрузка (более часа) создает специфическую нагрузку, при которой именованные каналы могут «отваливаться» по таймауту.
Рассмотрим порядок действий для принудительного перехода на протокол TCP/IP, который обеспечит более стабильное соединение между сервером приложений 1С и сервером СУБД:
tcp:ИмяСервера или tcp:IP-адрес.Для правильной подготовки серверной среды рекомендуем изучить инструкцию по настройке регламентных операций MS SQL SERVER под 1С.
Выясним, какой драйвер используется для связи. Если в тексте ошибки фигурирует SQL Server Native Client 11.0, следует учитывать, что этот компонент устарел. Современные версии платформы 1С, начиная с 8.3.20+, лучше работают с Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL). Рекомендуем установить актуальную версию драйвера на сервер приложений 1С. Это часто решает проблемы с таймаутами и некорректной обработкой длинных транзакций.
Когда выгрузка длится долго, сетевое оборудование может посчитать соединение неактивным и разорвать его. Посмотрим на параметры реестра Windows, отвечающие за проверку активности соединений. Настроим параметры KeepAliveTime и KeepAliveInterval в ветке:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Установим значение KeepAliveTime равным 300 000 (5 минут) в десятичной системе. Это заставит систему чаще подтверждать активность сессии, не давая сторонним механизмам закрыть канал связи во время формирования .dt.
Проанализируем состояние системной базы tempdb на SQL-сервере. Процесс выгрузки активно использует временные таблицы. Выясним следующие моменты:
Если ошибка сохраняется только на одной конкретной базе, выполним стандартные процедуры обслуживания:
.dt используется в качестве бэкапа, рассмотрите резервное копирование в файл dt без закрытия сессий с помощью скриптов. Это позволит автоматизировать процесс без прерывания работы пользователей — для сценариев с отключением клиентов есть обработка принудительного завершения сеансов пользователей.Важный момент: если вы переходите на использование Native SQL Backup (файлы .bak), это будет на порядок быстрее и надежнее, так как не требует монопольного захвата базы на длительное время.
Если же выгрузка выполняется через скрипт в планировщике, убедитесь, что перед началом процесса завершаются все активные сеансы пользователей и блокируются регламентные задания (в этом поможет обработка управления сеансами и блокировками в 1С), чтобы избежать конфликтов блокировок.