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

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

Развертывание серверной инфраструктуры 1С часто предполагает разделение ролей: сервер приложений 1С находится на одном физическом или виртуальном сервере, а система управления базами данных (СУБД), такая как MS SQL Server, — на другом. При такой схеме новички часто сталкиваются с проблемой "невидимости" сервера баз данных. Рассмотрим подробно, как преодолеть эти трудности, настроить сетевые экраны и обеспечить корректную авторизацию между компонентами системы.

Анализируем сетевую доступность и порты

Первое, с чего мы начнем — это проверка физической и логической доступности виртуальной машины. Распространенное заблуждение гласит, что виртуализация создает непреодолимый барьер для кластера 1С. На самом деле для rphost (рабочего процесса 1С) не имеет значения, является ли целевой сервер "железным" или виртуальным. Главное условие — наличие стабильного сетевого канала и открытых портов.

Разберем по шагам проверку портов:

  1. Порт 1433 (TCP): Это стандартный порт, по которому MS SQL Server принимает входящие соединения. По умолчанию он часто закрыт встроенным брандмауэром Windows на виртуальной машине.
  2. Проверка через Telnet: Не полагайтесь на обычный ping, так как он проверяет только доступность узла по протоколу ICMP, но не конкретный сервис. Используем команду в консоли сервера 1С: telnet IP_АДРЕС_SQL_СЕРВЕРА 1433 Если экран очистился — порт открыт. Если возникла ошибка подключения — порт заблокирован или служба SQL не слушает этот интерфейс.
  3. SQL Browser (UDP 1434): Если вы используете именованный экземпляр SQL (например, SERVER\SQLEXPRESS), вам обязательно нужно открыть порт UDP 1434, чтобы служба 1С могла узнать динамический порт этого экземпляра.

Настройка протоколов сетевого взаимодействия в SQL Server

Проанализируем ситуацию, когда порт вроде бы открыт, но соединения нет. Часто причина кроется в том, что в самом SQL Server Configuration Manager отключен протокол TCP/IP. Рассмотрим, как это исправить:

  1. Откройте оснастку SQL Server Network Configuration.
  2. Перейдите в раздел Protocols for MSSQLSERVER (или имя вашего экземпляра).
  3. Убедитесь, что TCP/IP находится в статусе Enabled.
  4. В свойствах TCP/IP на вкладке IP Addresses пролистайте вниз до раздела IPAll и проверьте, что поле TCP Port содержит 1433.

Важный момент: любые изменения сетевых протоколов SQL требуют обязательного перезапуска службы SQL Server (MSSQLSERVER). Без перезагрузки новые правила не вступят в силу, что часто становится причиной долгих и безрезультатных поисков ошибки.

Разбираемся с режимами авторизации: Windows vs SQL

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

Выясним причину, почему это не работает "из коробки":

Служба Агент сервера 1С:Предприятия по умолчанию запускается под локальной системной учетной записью (LocalSystem) или локальным пользователем (USR1CV8). Когда сервер 1С пытается постучаться на другой сервер SQL под "виндовой" авторизацией, он делает это от имени своей учетной записи. Но LocalSystem одного сервера ничего не знает о правах на другом сервере. Это называется проблемой "двойного прыжка".

Проанализируем правильные варианты решения:

  1. Смешанный режим (Mixed Mode): Это рекомендуемый способ для 1С. Переключите SQL Server в режим SQL Server and Windows Authentication mode.
  2. Создание пользователя SQL: Создайте внутри SQL Server отдельного пользователя (например, db_owner_1c), задайте ему сложный пароль и назначьте роли dbcreator и processadmin на уровне сервера.
  3. Использование данных в 1С: При добавлении информационной базы в кластер 1С указывайте именно этого SQL-пользователя и его пароль. Это гарантирует, что соединение будет установлено независимо от того, под какой учеткой крутится служба самого сервера 1С.

Если же политика безопасности требует использовать исключительно доменную авторизацию, вам придется запустить службу 1C:Enterprise 8.3 Server Agent от имени специально созданного доменного пользователя, который также должен быть добавлен в список Logins на SQL-сервере с соответствующими правами.

Использование SQL Native Client и псевдонимов (Aliases)

Иногда возникают ситуации, когда разрешение имен (DNS) в виртуальной сети работает некорректно. Например, сервер 1С не может разрешить имя SRVR-SQL-01 в IP-адрес. Посмотрим, как решить это с помощью системной утилиты cliconfg.exe.

Рассмотрим алгоритм создания псевдонима:

  1. На сервере 1С запустите C:\Windows\System32\cliconfg.exe.
  2. Перейдите на вкладку Alias и нажмите Add.
  3. Выберите TCP/IP.
  4. В поле Server alias введите удобное имя (например, SQL_VM).
  5. В поле Server name введите прямой IP-адрес вашей виртуальной машины со SQL.
  6. Нажмите ОК.

Теперь в консоли администрирования 1С в поле "Сервер баз данных" вы можете просто писать SQL_VM, и система мгновенно найдет нужный сервер по жестко прописанному адресу, минуя сетевые задержки и ошибки DNS.

Подведем итоги настройки

Для успешного подключения базы 1С к SQL Server на виртуальной машине мы должны обеспечить выполнение трех условий:

Соблюдение этих шагов позволяет избежать 99% проблем, связанных с первичным подключением и миграцией баз в виртуальную среду.

← На главную