Ошибка СУБД Microsoft OLE DB Provider for SQL Server в 1С:Предприятие 8.3 — это сбой подключения сервера 1С к экземпляру MS SQL Server. Платформа не может установить TCP-соединение, аутентифицироваться или получить ответ на запрос. Причины — от остановленной службы MSSQLSERVER до проблем с Kerberos в доменной сети.
Что означает эта ошибка
Сервер 1С обращается к MS SQL через провайдер OLE DB (раньше — SQL Server Native Client, начиная с 8.3.20 — Microsoft OLE DB Driver for SQL Server, MSOLEDBSQL). Если провайдер не может выполнить операцию — соединение, аутентификация, выполнение SQL — он возвращает HRESULT с описанием ошибки SQL Server. 1С транслирует это в сообщение «Ошибка СУБД» и показывает пользователю.
Сама строка ошибки очень информативна: в ней есть native code SQL Server, состояние (state) и текст. По этим параметрам понятно — это сетевая проблема, отказ в доступе или сбой движка СУБД.
Microsoft OLE DB Provider for SQL Server: Не удалось установить соединение с сервером по причине: SQL Server does not exist or access denied.
HRESULT=80004005, SQLSrvr: SQLSTATE=08001, state=1, Severity=10, native=17
Возникает в окне старта 1С, при подключении пользователей или внутри сеанса при выполнении запроса. На сервере 1С пишется в технологический журнал, на SQL — в ERRORLOG.
Причины появления
- Служба SQL Server (MSSQLSERVER) остановлена или не стартовала после перезагрузки.
- Неверный логин/пароль для подключения 1С к SQL (изменили пароль учётки sa или sqluser).
- Протокол TCP/IP выключен в SQL Server Configuration Manager.
- Фаервол блокирует порт 1433 (или нестандартный порт SQL).
- Истёк срок лицензии SQL Server (Evaluation Edition после 180 дней).
- Для именованного экземпляра — не работает SQL Server Browser, порт 1434 UDP закрыт.
- В доменной сети — проблемы с Kerberos, неверный SPN.
- Сертификат TLS просрочен (для Force Encryption).
- DNS не резолвит имя SQL-сервера или указано неверное имя в настройках кластера 1С.
Способ 1: Проверка службы и базовая диагностика
Начинайте с самого простого. На SQL-сервере:
- Откройте services.msc, найдите
SQL Server (MSSQLSERVER)илиSQL Server (имя_экземпляра). - Если статус «Остановлен» — запустите. Тип запуска — «Автоматически».
- Запустите также
SQL Server Browser, если используется именованный экземпляр. - Проверьте журнал SQL:
C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Log\ERRORLOG. Ищите записи с уровнем Error за время сбоя.
С сервера 1С проверьте доступность порта:
telnet sql-server-name 1433 PowerShell: Test-NetConnection -ComputerName sql-server-name -Port 1433
Если порт недоступен — проблема в сети или фаерволе.
Способ 2: Включение TCP/IP в SQL Server Configuration Manager
Частая причина после переустановки SQL — отключен TCP/IP. По умолчанию для Developer/Express он выключен.
- Запустите SQL Server Configuration Manager.
- SQL Server Network Configuration → Protocols for MSSQLSERVER.
- Включите TCP/IP (Enable).
- В свойствах TCP/IP → IP Addresses → IPAll. Установите TCP Port = 1433 (или нужный), TCP Dynamic Ports — очистите.
- Перезапустите службу SQL Server.
- Проверьте, что в журнале SQL появилась строка «Server is listening on [ ‘any’ <ipv4> 1433]».
Способ 3: Настройка фаервола
На SQL-сервере откройте правила Windows Firewall:
- Панель управления → Брандмауэр Windows → Дополнительные параметры.
- Правила для входящих → Создать правило → Для порта.
- Протокол TCP, локальный порт 1433. Действие — «Разрешить подключение».
- Профиль — Доменный (и Частный, если нужно).
- Имя правила: «SQL Server 1433».
- Аналогично создайте правило UDP 1434 для SQL Browser, если используется именованный экземпляр.
Или одной командой PowerShell от админа:
New-NetFirewallRule -DisplayName "SQL Server 1433" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action Allow
Способ 4: Проверка SPN и Kerberos в доменной сети
Если 1С и SQL в домене, а подключение идёт по Windows-аутентификации, проблема может быть в SPN. Признак — ошибка «Cannot generate SSPI context».
- На контроллере домена под учёткой администратора:
setspn -L <имя_учётки_службы_SQL> setspn -A MSSQLSvc/sql-server-name.domain.local:1433 <имя_учётки_службы_SQL> setspn -A MSSQLSvc/sql-server-name:1433 <имя_учётки_службы_SQL>
- Учётка службы SQL должна иметь право «Trust this user for delegation».
- На сервере 1С очистите кеш Kerberos:
klist purge. - Перезапустите службу
1C:Enterprise Server Agent.
Подробнее — в документации its.1c.ru, раздел администрирования кластера серверов.
Способ 5: Проверка лицензии и параметров подключения
Откройте в SSMS:
SELECT @@VERSION;
SELECT SERVERPROPERTY('Edition'), SERVERPROPERTY('LicenseType'); Если Edition = «Evaluation Edition» и установлен более 180 дней назад — лицензия истекла, нужно ввести ключ через мастер «Maintenance → Edition Upgrade» в установщике SQL.
В консоли администрирования сервера 1С проверьте параметры базы:
- Сервер 1С Предприятия → Кластер → Информационные базы → ваша база → Свойства.
- «Сервер баз данных» — точное имя SQL-сервера или IP. Для именованного экземпляра —
SERVER\INSTANCE. - «Тип СУБД» — Microsoft SQL Server.
- «Пользователь сервера БД» — учётка с правами sysadmin или db_owner. Введите пароль заново.
- Сохраните, перезапустите рабочие процессы кластера.
Профилактика
Используйте отдельную учётную запись SQL для 1С (не sa), задокументируйте пароль. Настройте мониторинг служб MSSQLSERVER и Server 1C через Zabbix или штатный мониторинг Windows. Не используйте Evaluation Edition в продакшене. В доменной сети — заведите для SQL отдельную сервисную учётку (managed service account), пропишите SPN сразу при установке. Правила фаервола создавайте на этапе развёртывания, не после первого инцидента. Регулярно обновляйте провайдер MSOLEDBSQL на серверах 1С — старые версии не поддерживают TLS 1.2+.
FAQ
Какой провайдер должен стоять на сервере 1С — SQL Native Client или MSOLEDBSQL?
Начиная с платформы 8.3.20 рекомендуется Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) версии 18.x и новее. SQL Native Client (SQLNCLI11) считается устаревшим, но ещё поддерживается. Качайте с сайта Microsoft.
В свойствах базы 1С хранится пароль SQL в открытом виде?
Нет, пароль шифруется в файле 1CV8Clst.lst кластера. Но при изменении пароля учётной записи SQL обязательно нужно переввести его в свойствах базы через консоль администрирования.
Telnet до 1433 проходит, а 1С всё равно ругается. Что ещё проверить?
Проверьте имя экземпляра (для именованного нужен SQL Browser), учётные данные, права учётки (db_owner на конкретной базе или sysadmin). Посмотрите ERRORLOG SQL — там будет конкретная причина отказа.
Можно ли отключить шифрование подключения, если сертификат просрочен?
Временно — да, через свойства Network Configuration → Force Encryption = No. Правильное решение — обновить сертификат и оставить шифрование включённым. Для тестового стенда можно использовать самоподписанный сертификат.
Что значит «SSPI context» в тексте ошибки?
Это указание на проблему с Kerberos-аутентификацией: клиент не смог получить тикет для сервера SQL. Обычно — отсутствие или дублирование SPN, проблема с правами делегирования или рассинхронизация времени в домене.
После переустановки SQL ошибка появилась снова. Что забыли?
Чаще всего — включить TCP/IP в Configuration Manager, открыть порт 1433 в фаерволе и пересоздать пользователя БД с теми же правами. Эти три шага обязательны после чистой установки.
1С не подключается с резервного сервера 1С, но работает с основного. В чём дело?
На резервном сервере 1С не обновлён MSOLEDBSQL или нет SPN для его учётки. Установите такой же провайдер, как на основном, проверьте права учётной записи службы 1С.