При запуске клиентского приложения 1С или при попытке обращения сервера приложений к базе данных может возникать критическая ошибка СУБД следующего вида: Microsoft SQL Server Native Client 11.0: Поставщик именованных каналов: не удалось открыть соединение с SQL Server [5]. HRESULT=80004005, SQLSrvr: SQLSTATE=08001, native=5. Разберем детально, что означает данный сбой, выясним его первопричины и подробно рассмотрим проверенные шаги по устранению проблемы.
Проанализируем техническую сторону сообщения. Числовой код [5] (он же native=5) в системных сообщениях Windows транслируется как ERROR_ACCESS_DENIED («Отказано в доступе»). Когда клиентская библиотека SQL Server пытается подключиться к СУБД через протокол именованных каналов (Named Pipes), соединение физически устанавливается через сетевой протокол SMB (порт 445) к специальному ресурсу вида \\ServerName\pipe\sql\query.
Для открытия такого пайпа операционная система Windows обязательно выполняет сетевую аутентификацию (через Kerberos или NTLM). Если между сервером 1С и SQL Server возникают проблемы с проверкой подлинности учетных записей, правами доступа или сетевой инфраструктурой, Windows блокирует открытие канала, а драйвер Native Client возвращает ошибку с кодом 5.
Рассмотрим, почему работавшая ранее система может внезапно перестать устанавливать соединение:
Самым надежным и рекомендованным решением для распределенной архитектуры (когда сервер 1С и MS SQL Server разнесены на разные машины) является отказ от именованных каналов в пользу протокола TCP/IP. Протокол TCP/IP не зависит от общих сетевых ресурсов Windows и работает быстрее и стабильнее по сети.
Разберем по шагам, как переключить базу данных на TCP/IP:
SQL-SRV).tcp: перед именем сервера: tcp:SQL-SRV.tcp:SQL-SRV,1433 или используем прямой IP-адрес: tcp:192.168.1.50,1433.Если часть пользователей теряет доступ не только к 1С, но и к остальным сетевым ресурсам (включая шлюзы интернета), корень проблемы лежит в физическом или канальном уровне сети. Выясним причину с помощью стандартных средств диагностики:
Event ID 4199 прямо указывает на присутствие в сети устройства с дублирующимся IP-адресом. Проверим ARP-таблицу командой:
arp -a
ipconfig /flushdns
Test-NetConnection -ComputerName SQL-SRV -Port 1433
Успешный результат в параметре TcpTestSucceeded : True подтвердит корректную работу сетевого стека по TCP.Если специфика инфраструктуры требует использования Named Pipes, разберем действия по восстановлению доменного доступа:
w32tm /resync
Test-ComputerSecureChannel
Если команда возвращает False, необходимо переприсоединить сервер к домену Active Directory.services.msc, найдем службу Агент сервера 1С:Предприятия (ragent.exe) и проверим вкладку «Вход в систему». При работе с удаленным SQL Server по именованным каналам служба должна запускаться от доменной учетной записи, обладающей правами доступа к объектам целевого сервера.Применение явного указания протокола tcp:ИмяСервера в свойствах базы 1С в подавляющем большинстве случаев устраняет ошибку [5] сразу, изолируя работу СУБД от временных сбоев Windows-аутентификации и сетевых пайпов SMB.