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

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Разбираемся с ролью служб: SQL Server Engine vs SQL Server Agent

Первым делом проанализируем состояние служб на сервере баз данных. Часто возникает заблуждение, что для работы 1С необходим запуск всех служб, имеющих в названии "SQL". Однако это не так. Рассмотрим основные компоненты:

  1. SQL Server (MSSQLSERVER или ИМЯ_ЭКЗЕМПЛЯРА): Это основное «ядро» системы. Если эта служба не активна, никакие подключения к базам данных невозможны. Именно она отвечает за обработку запросов 1С.
  2. SQL Server Agent: Это вспомогательная служба — планировщик задач. Она используется для выполнения регламентных операций внутри самого SQL: создания бэкапов по расписанию, обновления статистики, очистки процедурного кэша или индексов. Важно понимать: для того чтобы пользователь зашел в 1С, служба SQL Server Agent не обязательна. Если она не запускается, это не является причиной ошибки «база не существует», но это сигнал о том, что в будущем у вас не будут работать автоматические бэкапы средствами SQL.

Если вы столкнулись с невозможностью запуска SQL Server Agent, проверьте, запущен ли основной процесс SQL Server. Агент напрямую зависит от ядра и не может работать без него. Также убедитесь, что учетная запись, от которой запускается служба (например, LocalSystem или сетевая служба), имеет достаточные права в операционной системе.

Особенности работы с именованными экземплярами

При установке SQL Server можно выбрать «Экземпляр по умолчанию» (Default Instance) или «Именованный экземпляр» (Named Instance). В нашем случае мы рассматриваем вариант melnik\serverp, где melnik — это имя сервера, а serverp — имя конкретного экземпляра SQL.

Рассмотрим подробнее, почему это важно. Когда мы обращаемся к серверу просто по имени melnik, клиент (сервер 1С) пытается подключиться к стандартному порту TCP 1433. Однако именованные экземпляры по умолчанию используют динамические порты. Это означает, что при каждой перезагрузке службы SQL Server номер порта может меняться.

Для того чтобы сервер приложений 1С мог найти именованный экземпляр serverp, необходимо выполнение двух условий:

  1. Должна быть запущена служба SQL Server Browser. Она «слушает» входящие запросы на порту UDP 1434 и сообщает клиенту, на каком именно TCP-порту сейчас работает нужный экземпляр. Без этой службы подключение по имени melnik\serverp будет постоянно обрываться.
  2. В настройках SQL Server Configuration Manager в разделе Protocols for SERVERP должен быть принудительно включен протокол TCP/IP. По умолчанию в некоторых редакциях (например, SQL Express) он может быть выключен, что позволяет подключаться к базе только локально через Shared Memory.

Различие между именем базы в 1С и именем в SQL

Проанализируем самую частую причину ошибки, с которой столкнулся автор темы. В консоли администрирования 1С при создании или регистрации информационной базы есть два критически важных поля, которые новички часто путают:

Если вы укажете в параметрах сервера 1С в обоих полях szik, а на SQL-сервере база называется accszik, система выдаст ошибку, что база не найдена. Сервер 1С обращается к SQL-серверу и говорит: «Дай мне базу szik», на что SQL отвечает: «У меня такой базы нет, есть только accszik». Выясним причину несоответствия, проверив список баз в Management Studio, и убедимся, что в поле «Имя базы данных» в консоли 1С вписано верное значение.

Настройка сетевых протоколов и авторизации

Проанализируем ситуацию, когда имена указаны верно, службы запущены, но подключения все равно нет. Разберем по шагам проверку сетевых настроек:

  1. Протокол TCP/IP: Зайдите в SQL Server Configuration Manager -> SQL Server Network Configuration -> Protocols for [Имя_Экземпляра]. Убедитесь, что TCP/IP находится в статусе Enabled. После изменения этого параметра обязательно перезагрузите службу SQL Server.
  2. Статический порт: Чтобы исключить проблемы с динамическими портами, в свойствах TCP/IP на закладке IP Addresses прокрутите список до самого низа (раздел IPAll). Очистите поле TCP Dynamic Ports и в поле TCP Port впишите 1433 (или другой свободный порт). Теперь при настройке в 1С вы сможете указывать сервер просто как melnik (если это единственный экземпляр на этом порту) или melnik,1433.
  3. Смешанная авторизация (Mixed Mode): 1С:Предприятие чаще всего использует SQL-авторизацию. В свойствах сервера в Management Studio (раздел Security) должен быть выбран пункт SQL Server and Windows Authentication mode. Если оставить только Windows-авторизацию, сервер 1С не сможет подключиться, используя учетную запись sa или специально созданного пользователя 1C_User.

Настройка Брандмауэра (Firewall)

Если сервер 1С и SQL Server находятся на разных физических или виртуальных машинах, необходимо открыть "путь" для пакетов данных. Рассмотрим, какие порты нужно добавить в исключения:

В качестве более надежного способа можно добавить в исключения Брандмауэра само приложение sqlservr.exe (путь к нему обычно находится в папке C:\Program Files\Microsoft SQL Server\MSSQL...). Это позволит серверу принимать соединения на любом порту, который он динамически назначит себе при запуске.

Итоговый алгоритм действий

Подводя итог, если вы получаете ошибку «База не существует», пройдите по следующему чек-листу:

  1. Убедитесь, что запущена служба SQL Server (ИМЯ). Наличие запущенного SQL Agent желательно, но не критично для самого факта подключения.
  2. Проверьте в Management Studio точное имя базы данных.
  3. В консоли администрирования 1С проверьте поле "Имя базы данных" — оно должно совпадать с именем в SQL до последнего символа.
  4. Если используется именованный экземпляр (со знаком слэша \), убедитесь, что запущена служба SQL Browser и включен протокол TCP/IP.
  5. Проверьте, что сервер 1С может "достучаться" до SQL по сети (используйте команду telnet имя_сервера 1433 для проверки порта).

Соблюдение этих простых правил и внимательность к именованию объектов избавят вас от большинства проблем при развертывании серверной версии 1С:Предприятия.

← На главную