Как устранить ошибку подключения по сети 1С:Предприятие 7.7 к MS SQL Server 2008 R2?

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

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

Анализ причин сетевых ошибок при связке 1С 7.7 и SQL Server 2008 R2

Проблема кроется в сочетании сетевых параметров разрешения имен, устаревших механизмов работы платформы 1С 7.7 и встроенных ограничений проверки версий СУБД. Рассмотрим основные факторы, препятствующие нормальному соединению:

  1. Некорректная трансляция сетевого имени сервера (Name Resolution): Платформа 1С 7.7 использует классический 32-разрядный ODBC-драйвер SQL Server (sqlsrv32.dll), который при передаче сетевых запросов строго опирается на сопоставление NetBIOS- или DNS-имени сервера баз данных с его реальным IP-адресом. Если локальный DNS-сервер не может разрешить короткое имя сервера, подключение завершается ошибкой тайм-аута.
  2. Запрет удаленных соединений в СУБД: По умолчанию в экземпляре MS SQL Server удаленные подключения могут быть ограничены или заблокированы на уровне настроек инстанса.
  3. Блокировка версии СУБД в платформе 1С: Движок 1С 7.7 изначально разрабатывался под MS SQL Server 6.5, 7.0 и 2000. В коде библиотеки BkEnd.dll реализована проверка ответа команды SELECT @@VERSION. При подключении к MS SQL Server 2005, 2008 и новее платформа выдает критическую ошибку «Для работы с базой данных требуется MS SQL Server 6.5 + Service Pack 5а или более старшая версия» даже при успешном сетевом рукопожатии.

Шаг 1. Настройка разрешения имен на клиентских ПК и DNS

Выясним причину первой ошибки: когда клиент 1С обращается к серверу по имени, он не находит соответствующий IP-адрес. Решим эту задачу двумя путями.

Вариант 1. Локальная правка файла hosts (для отдельных компьютеров):

  1. Откроем текстовый редактор (например, Блокнот) от имени администратора.
  2. Перейдем к файлу C:\Windows\System32\drivers\etc\hosts (обратите внимание, что файл не имеет расширения).
  3. Добавим в конец файла строку с IP-адресом сервера СУБД и его сетевым именем (NetBIOS-именем компьютера, на котором установлен MS SQL Server):

Например, если сервер имеет адрес 192.168.3.25, а его имя в сети — srv-1c7, строка будет выглядеть так:

192.168.3.25 srv-1c7

Вариант 2. Централизованная настройка на DNS-сервере (рекомендуемый способ):

Чтобы не редактировать файл hosts вручную на каждом клиентском компьютере, добавим на корпоративном DNS-сервере запись типа A или псевдоним CNAME, который свяжет имя сервера баз данных с его статическим IP-адресом.

Шаг 2. Разрешение удаленных подключений в MS SQL Server Management Studio

Проверим параметры самого экземпляра SQL Server, чтобы убедиться, что удаленные сеансы разрешены на уровне СУБД:

  1. Запустим среду SQL Server Management Studio (SSMS) и подключимся к нашему экземпляру.
  2. В окне Object Explorer нажмем правой кнопкой мыши по корневому узлу сервера и выберем Свойства (Properties).
  3. Перейдем на вкладку Соединения (Connections).
  4. Убедимся, что установлен флаг Разрешить удаленные соединения с этим сервером (Allow remote connections to this server).
  5. Нажмем ОК для сохранения параметров.

Шаг 3. Устранение ошибки несовместимости версий в BkEnd.dll

После того как сетевой доступ настроен и платформа смогла достучаться до сервера баз данных, возникает следующая ошибка — несовместимость версии MS SQL Server 2008 R2 с проверкой внутри 1С 7.7.

Для устранения этой проблемы необходимо адаптировать файл BkEnd.dll, расположенный в каталоге установки платформы (по умолчанию C:\Program Files (x86)\1Cv77\BIN\BkEnd.dll):

  1. Обязательно создадим резервную копию оригинального файла BkEnd.dll.
  2. Применим специализированный патч (или заменяющую сборку библиотеки), отключающий жесткую проверку версии возвращаемой строки SELECT @@VERSION.
  3. Скопируем обновленный файл BkEnd.dll в папку BIN на клиентском компьютере и на сервере.

Шаг 4. Настройка сетевых протоколов и вспомогательных утилит

Разберем дополнительные параметры, гарантирующие стабильное подключение 1С 7.7 по протоколу TCP/IP:

  1. Настройка утилиты Client Network Utility (CliConfg): На 64-разрядных версиях Windows запустим 32-битную версию конфигуратора клиентов по пути C:\Windows\SysWOW64\cliconfg.exe. На вкладке Псевдоним (Alias) создадим алиас с именем сервера, выберем протокол TCP/IP, укажем IP-адрес сервера и снимем галочку динамического порта, явно указав порт 1433.
  2. Служба SQL Server Browser и Firewall: Если экземпляр именованный, убедимся, что служба SQL Server Browser запущена, а в брандмауэре Windows на сервере открыты входящие порты: TCP 1433 для самого SQL Server и UDP 1434 для SQL Server Browser.
  3. Сетевой доступ к каталогу базы данных: Поскольку платформа 1С 7.7 требует прямого доступа к файлам метаданных (1Cv7.MD, USRDEF\users.usr), сетевая папка с информационной базой должна быть открыта с полными правами (NTFS и общий доступ SMB) для всех работающих пользователей.

После выполнения указанных шагов сетевое подключение 1С:Предприятие 7.7 к базе данных на MS SQL Server 2008 R2 будет полностью восстановлено.

← На главную