При настройке клиент-серверного варианта работы 1С:Предприятие системные администраторы часто сталкиваются с ситуацией, когда база данных вроде бы создана в SQL Server Management Studio, но при попытке подключения через консоль администрирования 1С или клиентское приложение возникает ошибка: «Информационная база не существует». Ситуация осложняется, если при этом не запускаются сопутствующие службы, такие как SQL Server Agent. Разберем детально, как правильно настроить связку 1С и SQL Server, на что влияют службы и как избежать досадных ошибок в именовании объектов.
Первым делом проанализируем состояние служб на сервере баз данных. Часто возникает заблуждение, что для работы 1С необходим запуск всех служб, имеющих в названии "SQL". Однако это не так. Рассмотрим основные компоненты:
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, необходимо выполнение двух условий:
melnik\serverp будет постоянно обрываться.Protocols for SERVERP должен быть принудительно включен протокол TCP/IP. По умолчанию в некоторых редакциях (например, SQL Express) он может быть выключен, что позволяет подключаться к базе только локально через Shared Memory.Проанализируем самую частую причину ошибки, с которой столкнулся автор темы. В консоли администрирования 1С при создании или регистрации информационной базы есть два критически важных поля, которые новички часто путают:
szik).accszik, то в этом поле должно быть строго accszik.Если вы укажете в параметрах сервера 1С в обоих полях szik, а на SQL-сервере база называется accszik, система выдаст ошибку, что база не найдена. Сервер 1С обращается к SQL-серверу и говорит: «Дай мне базу szik», на что SQL отвечает: «У меня такой базы нет, есть только accszik». Выясним причину несоответствия, проверив список баз в Management Studio, и убедимся, что в поле «Имя базы данных» в консоли 1С вписано верное значение.
Проанализируем ситуацию, когда имена указаны верно, службы запущены, но подключения все равно нет. Разберем по шагам проверку сетевых настроек:
SQL Server Configuration Manager -> SQL Server Network Configuration -> Protocols for [Имя_Экземпляра]. Убедитесь, что TCP/IP находится в статусе Enabled. После изменения этого параметра обязательно перезагрузите службу SQL Server.TCP/IP на закладке IP Addresses прокрутите список до самого низа (раздел IPAll). Очистите поле TCP Dynamic Ports и в поле TCP Port впишите 1433 (или другой свободный порт). Теперь при настройке в 1С вы сможете указывать сервер просто как melnik (если это единственный экземпляр на этом порту) или melnik,1433.sa или специально созданного пользователя 1C_User.Если сервер 1С и SQL Server находятся на разных физических или виртуальных машинах, необходимо открыть "путь" для пакетов данных. Рассмотрим, какие порты нужно добавить в исключения:
В качестве более надежного способа можно добавить в исключения Брандмауэра само приложение sqlservr.exe (путь к нему обычно находится в папке C:\Program Files\Microsoft SQL Server\MSSQL...). Это позволит серверу принимать соединения на любом порту, который он динамически назначит себе при запуске.
Подводя итог, если вы получаете ошибку «База не существует», пройдите по следующему чек-листу:
\), убедитесь, что запущена служба SQL Browser и включен протокол TCP/IP.telnet имя_сервера 1433 для проверки порта).Соблюдение этих простых правил и внимательность к именованию объектов избавят вас от большинства проблем при развертывании серверной версии 1С:Предприятия.