Ошибка «Сервер баз данных не обнаружен» появляется при попытке подключиться к информационной базе 1С в клиент-серверном режиме. Платформа 1С:Предприятие не может установить соединение с MS SQL Server. Работа пользователей остановлена, база недоступна.

Причин пять: от остановленной службы SQL Server до закрытого порта в брандмауэре. Все решаются на стороне сервера. Разберём каждую с командами диагностики и пошаговыми инструкциями. Если вы ещё выбираете между SQL Server и PostgreSQL для 1С — сравнение с тестами производительности в отдельной статье.

Краткая таблица причин

ПричинаБыстрая проверкаВремя на исправление
Служба SQL Server не запущенаsc query MSSQLSERVER1 минута
Неправильное имя сервера или экземпляраПроверить строку подключения в 1С2 минуты
TCP/IP отключён в SQL ServerSQL Server Configuration Manager5 минут
Брандмауэр блокирует портTest-NetConnection -Port 14335 минут
Проблемы с аутентификациейПодключение через SSMS5-10 минут

Причина 1 — служба SQL Server не запущена

Самая частая причина. SQL Server остановился после перезагрузки сервера, аварийного отключения питания или ручной остановки администратором. Без работающего экземпляра SQL Server любые подключения невозможны — 1С получает ошибку «сервер баз данных не обнаружен».

Отдельная служба — SQL Server Browser. Она отвечает за обнаружение именованных экземпляров SQL Server в сети. Если Browser остановлен, а у вас именованный экземпляр (например, SERVER\SQL1C), клиенты не смогут его найти по имени.

Диагностика

Проверьте статус служб. Для экземпляра по умолчанию:

sc query MSSQLSERVER
sc query SQLBrowser

Для именованного экземпляра (например, SQL1C):

sc query MSSQL$SQL1C

Если состояние STOPPED — служба не работает. Посмотрите причину остановки в журнале Windows: Event ViewerApplication → фильтр по источнику MSSQLSERVER.

Решение

Запустите обе службы:

net start MSSQLSERVER
net start SQLBrowser

Для именованного экземпляра:

net start MSSQL$SQL1C

Убедитесь, что тип запуска — «Автоматически». Откройте services.msc, найдите SQL Server и SQL Server Browser, установите тип запуска Automatic. Это гарантирует перезапуск после перезагрузки сервера.

Если служба запускается и сразу останавливается — проблема глубже. Возможные причины: повреждена системная база master, не хватает оперативной памяти, конфликт с другим экземпляром. Смотрите лог ошибок SQL Server: C:\Program Files\Microsoft SQL Server\MSSQLXX.INSTANCE\MSSQL\Log\ERRORLOG.

Причина 2 — неправильное имя сервера или экземпляра

1С подключается к SQL Server по строке, которую администратор указал при создании информационной базы. Ошибка в имени сервера, имени экземпляра или формате строки подключения — и платформа не находит сервер баз данных.

Типичные ошибки: опечатка в имени хоста, путаница между экземпляром по умолчанию и именованным, использование IP-адреса без проверки привязки к интерфейсу.

Диагностика

Откройте свойства информационной базы в 1С (или файл ibases.v8i). Проверьте поле «Сервер баз данных». Правильные форматы:

Проверьте доступность сервера по сети:

ping SERVER-NAME

Если ping не проходит — проблема на уровне сети или DNS, а не SQL Server.

Проверьте имя экземпляра на самом сервере SQL:

sqlcmd -S localhost -Q "SELECT @@SERVERNAME, @@SERVICENAME"

Команда покажет имя сервера и имя экземпляра. Сравните с тем, что указано в 1С.

Решение

Исправьте строку подключения в 1С. Откройте список информационных баз в стартовом окне 1С → Изменить → поле «Сервер баз данных» → введите правильное имя.

Если SQL Server установлен как именованный экземпляр и вы не помните имя:

sqlcmd -L

Команда выведет все доступные экземпляры SQL Server в локальной сети (при условии, что SQL Server Browser запущен).

Частая ловушка: после переименования сервера Windows имя экземпляра SQL Server остаётся старым. Используйте IP-адрес вместо имени хоста, чтобы исключить проблемы DNS.

Причина 3 — SQL Server не принимает TCP/IP подключения

По умолчанию именованные экземпляры SQL Server слушают только через Shared Memory и Named Pipes. Протокол TCP/IP может быть отключён. Если 1С и SQL Server работают на разных машинах — подключение через Shared Memory невозможно, нужен TCP/IP. Даже если обе службы на одном сервере, кластер серверов 1С подключается к SQL через TCP/IP.

Диагностика

Откройте SQL Server Configuration Manager. Путь: SQL Server Network ConfigurationProtocols for [имя экземпляра]. Проверьте статус протокола TCP/IP — он должен быть Enabled.

Если Configuration Manager недоступен, проверьте через реестр:

reg query "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp" /v Enabled

Значение 1 — TCP/IP включён, 0 — выключен. Номер версии (MSSQL16) зависит от установленной версии SQL Server: MSSQL16 для SQL Server 2022, MSSQL15 для 2019, MSSQL14 для 2017.

Также проверьте, на каком порту слушает SQL Server:

netstat -ano | findstr ":1433"

Если вывод пуст — TCP/IP не работает или используется другой порт.

Решение

Включите TCP/IP в SQL Server Configuration Manager:

  1. Откройте SQL Server Configuration Manager.
  2. Перейдите в SQL Server Network ConfigurationProtocols for [экземпляр].
  3. Правый клик на TCP/IPEnable.
  4. Двойной клик на TCP/IP → вкладка IP Addresses → в разделе IPAll укажите TCP Port: 1433 (или ваш порт).
  5. Перезапустите службу SQL Server: net stop MSSQLSERVER && net start MSSQLSERVER.

Для именованного экземпляра с динамическим портом: оставьте поле TCP Port пустым, а в TCP Dynamic Ports укажите 0. SQL Server выберет свободный порт автоматически. Убедитесь, что SQL Server Browser запущен — он сообщает клиентам актуальный порт именованного экземпляра.

Причина 4 — брандмауэр блокирует порт SQL Server

SQL Server слушает порт 1433 (TCP), SQL Server Browser — порт 1434 (UDP). Если брандмауэр Windows или сетевой файрвол закрывают эти порты, подключение с клиентской машины не пройдёт. На самом сервере всё работает — sqlcmd подключается через localhost. А вот 1С с другого компьютера получает ошибку «сервер баз данных не обнаружен».

Диагностика

С клиентской машины (где работает 1С) проверьте доступность порта:

Test-NetConnection -ComputerName SERVER-NAME -Port 1433

Если TcpTestSucceeded: False — порт закрыт файрволом или SQL Server не слушает TCP/IP (см. причину 3).

На сервере проверьте правила брандмауэра:

netsh advfirewall firewall show rule name=all dir=in | findstr /i "1433"

Если правила нет — брандмауэр блокирует входящие подключения к SQL Server.

Решение

Откройте порты SQL Server в брандмауэре Windows:

netsh advfirewall firewall add rule name="SQL Server TCP 1433" dir=in action=allow protocol=tcp localport=1433
netsh advfirewall firewall add rule name="SQL Server Browser UDP 1434" dir=in action=allow protocol=udp localport=1434

Если используете именованный экземпляр на динамическом порту — вместо порта откройте доступ к исполняемому файлу SQL Server:

netsh advfirewall firewall add rule name="SQL Server Instance" dir=in action=allow program="C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Binn\sqlservr.exe"

После добавления правил проверьте подключение повторно через Test-NetConnection. Если между клиентом и сервером есть маршрутизатор с ACL или корпоративный файрвол — откройте порты и на нём. Подробнее о сетевых требованиях к серверу 1С — в статье о требованиях к серверу.

Причина 5 — проблемы с аутентификацией SQL Server

SQL Server поддерживает два режима аутентификации: Windows Authentication и Mixed Mode (Windows + SQL). По умолчанию при установке включён только Windows Authentication. Если 1С подключается под учётной записью SQL (логин/пароль), а Mixed Mode не включён — соединение отклоняется. Результат — та же ошибка «сервер баз данных не обнаружен» или «login failed».

Диагностика

Попробуйте подключиться к SQL Server через SQL Server Management Studio (SSMS) с теми же учётными данными, что указаны в 1С. Если SSMS выдаёт ошибку «Login failed for user» — проблема в аутентификации.

Проверьте режим аутентификации через запрос (подключитесь через Windows Authentication):

sqlcmd -S localhost -Q "SELECT SERVERPROPERTY('IsIntegratedSecurityOnly')"

Результат 1 — только Windows Authentication. Результат 0 — Mixed Mode (оба режима).

Проверьте, существует ли логин SQL, который использует 1С:

sqlcmd -S localhost -Q "SELECT name, type_desc, is_disabled FROM sys.server_principals WHERE type = 'S'"

Ищите логин, указанный в настройках информационной базы 1С. Если is_disabled = 1 — учётная запись отключена.

Решение

Включите Mixed Mode аутентификации. Через SSMS:

  1. Правый клик на экземпляр сервера → PropertiesSecurity.
  2. Выберите SQL Server and Windows Authentication mode.
  3. Нажмите OK.
  4. Перезапустите службу SQL Server.

Через T-SQL:

USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2
GO

После смены режима перезапустите SQL Server:

net stop MSSQLSERVER && net start MSSQLSERVER

Если логин для 1С не создан — создайте его с необходимыми правами:

CREATE LOGIN [usr1c] WITH PASSWORD = 'StrongPassword123!';
ALTER SERVER ROLE [dbcreator] ADD MEMBER [usr1c];

Роль dbcreator нужна, чтобы 1С могла создавать новые базы. Для работы с существующими базами достаточно роли db_owner на конкретной базе.

Если ничего не помогло

Вы проверили все пять причин, а ошибка остаётся? Менее очевидные варианты: устаревший драйвер SQL Server Native Client на стороне сервера 1С, несовместимость версии TLS (SQL Server 2012 и старше требуют патчей для TLS 1.2). Также причиной бывает ограничение антивируса на сетевые подключения или нехватка ресурсов — SQL Server не может выделить память для нового подключения.

Попробуйте подключиться к SQL Server утилитой sqlcmd с машины, где работает сервер 1С. Если sqlcmd подключается, а 1С нет — проблема в настройках 1С или драйвере ODBC. Если и sqlcmd не подключается — проблема на уровне сети или SQL Server. Не можете разобраться — оставьте заявку, проведём удалённую диагностику.

Как предотвратить ошибку «сервер баз данных не обнаружен»

Аварийный поиск причины в рабочее время — потерянные часы и нервы. Профилактика занимает 30 минут на настройку и снимает 90% инцидентов. Подробнее о том, как мы тестируем серверные конфигурации под нагрузкой 1С — в описании нашей методологии.

Мониторинг

Автозапуск и устойчивость

Чек-лист после установки SQL Server

Правильно подобранное серверное оборудование снижает вероятность аварий. ECC-память защищает от битовых ошибок в данных SQL Server, RAID — от потери баз при сбое диска. Если возникают другие ошибки 1С при работе с сервером — смотрите статью про ошибку HTTP при публикации.

Вопросы и ответы

Что означает ошибка «Сервер баз данных не обнаружен» в 1С?

Ошибка означает, что платформа 1С:Предприятие не может установить соединение с MS SQL Server. Причины: остановленная служба SQL Server, неправильное имя сервера или экземпляра в строке подключения, отключённый протокол TCP/IP, закрытые порты в брандмауэре или проблемы с аутентификацией (Mixed Mode не включён).

Какой порт использует SQL Server для подключения из 1С?

SQL Server по умолчанию слушает порт 1433 (TCP). SQL Server Browser использует порт 1434 (UDP) для обнаружения именованных экземпляров. Оба порта должны быть открыты в брандмауэре. Именованные экземпляры могут использовать динамический порт — его сообщает клиентам служба Browser.

Как проверить, работает ли SQL Server?

Выполните команду sc query MSSQLSERVER (для экземпляра по умолчанию) или sc query MSSQL$ИМЯ_ЭКЗЕМПЛЯРА (для именованного). Состояние RUNNING — служба работает. Для проверки доступности по сети с другой машины: Test-NetConnection -ComputerName SERVER-NAME -Port 1433.

Чем отличается экземпляр по умолчанию от именованного?

Экземпляр по умолчанию (MSSQLSERVER) слушает порт 1433, подключение по имени сервера без указания экземпляра. Именованный экземпляр (например, SQL1C) использует динамический порт, подключение через SERVER\SQL1C. Для именованных экземпляров обязательна служба SQL Server Browser — она сообщает клиентам, на каком порту слушает экземпляр.

Нужно ли перезапускать SQL Server после включения TCP/IP?

Да. Изменения в SQL Server Configuration Manager (включение TCP/IP, смена порта) вступают в силу только после перезапуска службы SQL Server. Команда: net stop MSSQLSERVER && net start MSSQLSERVER. Подключённые пользователи будут отключены — предупредите их заранее.

ms-sql sql-server troubleshooting решение-проблем