Подключение базы 1С к Microsoft SQL Server через сервер 1С:Предприятия

· 10 мин

Содержание

Напрямую клиент 1С с SQL Server не работает : базу 1С привязывают к SQL серверу через сервер 1С:Предприятия. Схема такая: ставите MS SQL и создаёте в нём логин, ставите сервер 1С (агент и кластер), затем в окне запуска 1С выбираете Добавить → Создание новой информационной базы → На сервере 1С:Предприятия и указываете имя SQL-сервера, имя базы и логин. Существующую файловую базу переносят выгрузкой в .dt и загрузкой в новую серверную.

Ниже порядок для платформы 8.3 и Microsoft SQL Server на Windows Server 2016 и новее. Шагов немного, но почти каждая ошибка подключения — это пропущенная мелочь: выключенный TCP/IP, закрытый порт или логин без нужной роли.

ODBC-источник (DSN) для 1С создавать не нужно. Сервер 1С подключается к SQL Server через клиентский драйвер напрямую, по имени сервера, без настроек в «Источниках данных ODBC».

1. Подготовка: что поставить и какие права выдать в SQL Server

Минимальный набор на сервере (или на двух машинах):

  • 🗄️ Microsoft SQL Server — редакция Standard или Enterprise для рабочей базы. Express годится для теста: у него ограничение 10 ГБ на одну базу и урезанное использование памяти.
  • 🖥️ Сервер 1С:Предприятия 8.3 той же версии, что и клиенты, с лицензией на сервер.
  • 🔧 SQL Server Management Studio (SSMS) — для создания логина и обслуживания.
  • 🔑 Клиентский драйвер SQL Server на машине с сервером 1С. Если 1С и SQL стоят на одном сервере, он уже есть. Если на разных — драйвер ставят на сервер 1С отдельно.

Параметры при установке SQL Server

При установке СУБД обратите внимание на три пункта:

  1. Сортировка (Collation) — Cyrillic_General_CI_AS. Её задают на шаге настройки ядра СУБД. С другой сортировкой база создастся, но возможны проблемы с упорядочиванием и поиском по русским строкам.
  2. Режим проверки подлинности — смешанный (Mixed Mode: SQL Server и Windows). 1С подключается SQL-логином с паролем, поэтому чистая Windows-аутентификация не подойдёт.
  3. Пароль для sa — задайте сложный и запишите. Работать 1С под sa не стоит, но для первичной настройки он пригодится.

Отдельный логин для 1С

В SSMS: Security → Logins → New Login. Имя, например, user1c, тип — SQL Server authentication, снимите галку принудительной смены пароля.

ЗадачаКакую роль дать логину
1С сама создаёт базу в SQLсерверная роль dbcreator
База уже создана администратором SQLdb_owner в этой базе
Быстрый тестовый стендsysadmin (в рабочей среде избыточно)

Если база создаётся из 1С, после создания логин автоматически становится её владельцем. Роль dbcreator потом можно оставить — она нужна, если будете заводить новые базы.

2. Как открыть SQL Server для сетевого подключения по TCP/IP

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

  1. Откройте SQL Server Configuration Manager (ищется в меню «Пуск» по слову SQL Server Configuration).
  2. Перейдите в SQL Server Network Configuration → Protocols for MSSQLSERVER (для именованного экземпляра — его имя вместо MSSQLSERVER).
  3. Для TCP/IP поставьте Enabled.
  4. Перезапустите службу SQL Server в разделе SQL Server Services.

Перезапуск службы SQL обрывает все сеансы, работающие с СУБД. Если на сервере уже живут другие базы, делайте это вне рабочего времени.

Порты и брандмауэр

ЧтоПортКогда нужен
Экземпляр по умолчаниюTCP 1433всегда при сетевом подключении
SQL Server BrowserUDP 1434для именованного экземпляра с динамическим портом

Именованный экземпляр в 1С указывают как ИМЯСЕРВЕРА\ИМЯЭКЗЕМПЛЯРА, например SRV-SQL\SQL2019. Чтобы не зависеть от службы Browser, в свойствах TCP/IP (вкладка IP Addresses, блок IPAll) задают фиксированный порт и открывают его в брандмауэре.

Проверить, что порт доступен с машины сервера 1С, можно из PowerShell:

Test-NetConnection SRV-SQL -Port 1433

TcpTestSucceeded : True — сетевой путь открыт, дальше проблемы ищите в логине и правах.

3. Установка сервера 1С и проверка кластера

Сервер 1С ставится из полного дистрибутива платформы (64-битная версия). В мастере установки отметьте компоненты «Сервер 1С:Предприятия» и «Администрирование сервера 1С:Предприятия», а также включите установку сервера как службы Windows.

Что установщик предложит и что выбрать:

  • 👤 Учётная запись службы. По умолчанию создаётся локальный пользователь USR1CV8. Для работы с сетевыми папками и выгрузками удобнее доменная учётка. У неё должно быть право входа в качестве службы и полный доступ к каталогу кластера srvinfo.
  • 📂 Каталог данных кластера — по умолчанию C:\Program Files\1cv8\srvinfo. На сервере с медленным системным диском его переносят на быстрый том.
  • 🔌 Порты. Агент слушает 1540, менеджер кластера — 1541, рабочие процессы используют диапазон 1560–1591 (задаётся в свойствах рабочего сервера). Все эти порты должны быть открыты в брандмауэре сервера 1С для клиентов.

После установки служба «Агент сервера 1С:Предприятия 8.3» должна быть в состоянии «Выполняется», а при первом старте агент сам создаёт кластер с именем «Локальный кластер» на порту 1541.

Консоль администрирования и radmin.dll

Консоль кластеров открывается через ярлык «Администрирование серверов 1С Предприятия». Если она не запускается или выдаёт ошибку класса, зарегистрируйте библиотеку из каталога нужной версии платформы, запустив командную строку от администратора:

regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll"

Вместо 8.3.xx.xxxx подставьте номер установленной платформы. Регистрировать нужно ту же версию, что и у агента. После этого в консоли добавьте центральный сервер по имени машины и убедитесь, что виден кластер.

Проверить кластер можно и без консоли, утилитой rac (нужна запущенная служба ras):

rac cluster list

Команда вернёт идентификатор кластера, имя и порт. Пустой ответ или ошибка соединения — агент не запущен или порт закрыт.

4. Привязка базы 1С к SQL: новая база и перенос существующей

Регистрировать базу в кластере удобнее всего прямо из окна запуска 1С на любой рабочей машине.

Создание новой серверной базы

  1. В окне запуска нажмите Добавить → Создание новой информационной базы.
  2. Выберите пустую базу или шаблон конфигурации → Далее.
  3. Укажите имя для списка и вариант На сервере 1С:Предприятия.
  4. Заполните параметры (таблица ниже) → Далее → Готово.
ПолеЧто указатьПример
Кластер серверов 1С:Предприятияимя машины с сервером 1СSRV-1C
Имя информационной базы в кластерекороткое, латиницей, без пробеловbuh
Тип СУБДMS SQL Server—
Сервер баз данныхимя SQL-сервера или экземпляраSRV-SQL
Имя базы данныхимя базы в SQLbuh
Пользователь / пароль БДлогин из раздела 1user1c
Разрешить выдачу лицензий сервером 1С«Да», если лицензии стоят на сервере—
Смещение датоставьте значение по умолчанию—
Создать базу данных в случае ее отсутствиявключить—
Установить блокировку регламентных заданийвключить для копии рабочей базы—

Если сервер 1С работает на нестандартном порту, в поле кластера пишут SRV-1C:1641 — указывается порт менеджера кластера.

Смещение дат после создания базы не меняется. Исправить его можно только выгрузкой в .dt и загрузкой в новую базу с другим значением. Оно влияет на то, как даты выглядят при прямых SQL-запросах к таблицам, поэтому внешние отчёты по SQL должны знать выбранное значение.

Блокировка регламентных заданий важна, когда вы разворачиваете копию рабочей базы: без неё копия начнёт отправлять обмены, загружать курсы и выполнять другие фоновые задачи наравне с оригиналом.

Перенос существующей файловой базы на SQL

Здесь главный приём — выгрузка в .dt. Копировать файл 1Cv8.1CD в SQL бесполезно: форматы хранения разные.

  1. Откройте файловую базу в Конфигураторе: Администрирование → Выгрузить информационную базу, сохраните .dt.
  2. Создайте пустую серверную базу по шагам выше (без шаблона).
  3. Откройте её в Конфигураторе: Администрирование → Загрузить информационную базу, выберите .dt.
  4. Дождитесь окончания загрузки и перезапустите Конфигуратор.

Выгрузку и загрузку выполняют, когда в базах нет пользователей: загрузка .dt требует монопольного доступа и полностью заменяет данные целевой базы.

Загрузка .dt затирает всё, что было в базе-приёмнике. Проверьте, что выбрали именно новую пустую базу, а не рабочую.

Если у базы были пользователи с аутентификацией операционной системы, после переноса проверьте привязку доменных учёток в списке пользователей: имена машин и домены могли поменяться.

5. Ошибки при подключении базы 1С к SQL серверу

Диагностика: выберите симптом

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

6. Настройка SQL Server после привязки базы

Связка работает и с настройками по умолчанию, но под нагрузкой SQL Server «из коробки» ведёт себя неоптимально. Что меняют в первую очередь:

Память и параллелизм

  • 🧠 Максимальная память сервера (Server Properties → Memory → Maximum server memory). По умолчанию SQL забирает почти всю ОЗУ. Оставьте операционной системе 2–4 ГБ, а если сервер 1С на той же машине — ещё память под его рабочие процессы. Пример: на сервере с 32 ГБ, где стоят и SQL, и 1С, SQL отдают около 20 ГБ.
  • ⚙️ Max Degree of Parallelism (Server Properties → Advanced). Для 1С традиционно ставят 1: запросы 1С короткие и многочисленные, параллельные планы им чаще мешают.
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 20480; RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 1; RECONFIGURE;

Модель восстановления и журнал транзакций

МодельКогда выбиратьРиск
Simpleдостаточно ежедневной полной копиипотеря данных за день при сбое
Fullнужен откат на любой момент временижурнал растёт без резервного копирования журнала

Частая история: база в модели Full, бэкапы журнала никто не настроил, и файл .ldf за месяц вырастает больше самой базы. Либо настройте копирование журнала, либо переведите базу в Simple.

Регламентное обслуживание и SQL-агент

Для самой работы 1С служба SQL Server Agent не нужна. Она нужна для планов обслуживания — без них база постепенно замедляется. Включите агенту автоматический запуск (в Express его нет, там задания запускают планировщиком Windows) и создайте план в SSMS: Management → Maintenance Plans.

Типовой набор заданий:

  1. Ежедневно ночью — полная резервная копия базы.
  2. Ежедневно — обновление статистики (Update Statistics).
  3. Раз в неделю — перестроение или реорганизация индексов.
  4. После обновления статистики — очистка процедурного кэша, чтобы SQL построил планы по свежим данным:
DBCC FREEPROCCACHE;

Тяжёлые задания ставьте на время, когда никто не работает и не идут ночные обмены 1С.

Ещё три настройки, о которых забывают

  • 🛡️ Исключите из проверки антивирусом файлы .mdf/.ldf и каталог srvinfo.
  • ⚡ Включите в Windows схему электропитания «Высокая производительность».
  • 💾 Разнесите данные, журнал и tempdb по разным дискам, если такая возможность есть, и создайте у tempdb несколько файлов данных одинакового размера.

7. Частые вопросы

Можно ли подключить 1С к SQL без сервера 1С:Предприятия?
Нет. Клиент 1С работает с любой СУБД, включая SQL Server, только через сервер 1С. Без сервера доступен лишь файловый вариант базы.
Подойдёт ли бесплатный SQL Server Express?
Для теста и небольшой базы — да. Ограничение — 10 ГБ на базу данных и урезанное использование памяти и ядер, поэтому для рабочей базы на 10+ пользователей его не хватает.
Нужна ли лицензия на сервер 1С, если клиентские лицензии уже есть?
Да. Серверу 1С:Предприятия нужна своя лицензия, клиентские её не заменяют. СУБД Microsoft SQL лицензируется отдельно, по правилам Microsoft.
Можно ли держать 1С и SQL на одной машине?
Можно, и для 10–30 пользователей это обычная схема: обмен идёт через общую память, без сетевых задержек. Главное — ограничить память SQL, иначе он вытеснит рабочие процессы 1С.
Как вернуть серверную базу обратно в файловую?
Тем же путём, что и в обратную сторону: выгрузите .dt из серверной базы, создайте пустую файловую и загрузите в неё выгрузку через Конфигуратор.