При работе с крупными информационными базами на платформе 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, это первый кандидат на исправление. Длительная выгрузка (более часа) создает специфическую нагрузку, при которой именованные каналы могут «отваливаться» по таймауту. В таких случаях полезно провести комплексный замер производительности контура 1С и поиск узких мест, чтобы исключить влияние сетевых задержек.
Рассмотрим порядок действий для принудительного перехода на протокол 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), это будет на порядок быстрее и надежнее, так как не требует монопольного захвата базы на длительное время.
Если же выгрузка выполняется через скрипт в планировщике, убедитесь, что перед началом процесса завершаются все активные сеансы пользователей и блокируются регламентные задания, чтобы избежать конфликтов блокировок.