Подключение базы 1С к Microsoft SQL Server через сервер 1С:Предприятия
Содержание
Напрямую клиент 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
При установке СУБД обратите внимание на три пункта:
- Сортировка (Collation) —
Cyrillic_General_CI_AS. Её задают на шаге настройки ядра СУБД. С другой сортировкой база создастся, но возможны проблемы с упорядочиванием и поиском по русским строкам. - Режим проверки подлинности — смешанный (
Mixed Mode: SQL Server и Windows). 1С подключается SQL-логином с паролем, поэтому чистая Windows-аутентификация не подойдёт. - Пароль для
sa— задайте сложный и запишите. Работать 1С подsaне стоит, но для первичной настройки он пригодится.
Отдельный логин для 1С
В SSMS: Security → Logins → New Login. Имя, например, user1c, тип — SQL Server authentication, снимите галку принудительной смены пароля.
| Задача | Какую роль дать логину |
|---|---|
| 1С сама создаёт базу в SQL | серверная роль dbcreator |
| База уже создана администратором SQL | db_owner в этой базе |
| Быстрый тестовый стенд | sysadmin (в рабочей среде избыточно) |
Если база создаётся из 1С, после создания логин автоматически становится её владельцем. Роль dbcreator потом можно оставить — она нужна, если будете заводить новые базы.
2. Как открыть SQL Server для сетевого подключения по TCP/IP
Если сервер 1С и SQL Server стоят на одной машине, подключение пройдёт через Shared Memory, и этот раздел можно пропустить. Для разных машин TCP/IP обязателен, а после установки он нередко выключен (в Express — всегда).
- Откройте SQL Server Configuration Manager (ищется в меню «Пуск» по слову
SQL Server Configuration). - Перейдите в
SQL Server Network Configuration → Protocols for MSSQLSERVER(для именованного экземпляра — его имя вместо MSSQLSERVER). - Для
TCP/IPпоставьтеEnabled. - Перезапустите службу SQL Server в разделе
SQL Server Services.
Перезапуск службы SQL обрывает все сеансы, работающие с СУБД. Если на сервере уже живут другие базы, делайте это вне рабочего времени.
Порты и брандмауэр
| Что | Порт | Когда нужен |
|---|---|---|
| Экземпляр по умолчанию | TCP 1433 | всегда при сетевом подключении |
| SQL Server Browser | UDP 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С:Предприятия. - Заполните параметры (таблица ниже) →
Далее→Готово.
| Поле | Что указать | Пример |
|---|---|---|
| Кластер серверов 1С:Предприятия | имя машины с сервером 1С | SRV-1C |
| Имя информационной базы в кластере | короткое, латиницей, без пробелов | buh |
| Тип СУБД | MS SQL Server | — |
| Сервер баз данных | имя SQL-сервера или экземпляра | SRV-SQL |
| Имя базы данных | имя базы в SQL | buh |
| Пользователь / пароль БД | логин из раздела 1 | user1c |
| Разрешить выдачу лицензий сервером 1С | «Да», если лицензии стоят на сервере | — |
| Смещение дат | оставьте значение по умолчанию | — |
| Создать базу данных в случае ее отсутствия | включить | — |
| Установить блокировку регламентных заданий | включить для копии рабочей базы | — |
Если сервер 1С работает на нестандартном порту, в поле кластера пишут SRV-1C:1641 — указывается порт менеджера кластера.
Смещение дат после создания базы не меняется. Исправить его можно только выгрузкой в .dt и загрузкой в новую базу с другим значением. Оно влияет на то, как даты выглядят при прямых SQL-запросах к таблицам, поэтому внешние отчёты по SQL должны знать выбранное значение.
Блокировка регламентных заданий важна, когда вы разворачиваете копию рабочей базы: без неё копия начнёт отправлять обмены, загружать курсы и выполнять другие фоновые задачи наравне с оригиналом.
Перенос существующей файловой базы на SQL
Здесь главный приём — выгрузка в .dt. Копировать файл 1Cv8.1CD в SQL бесполезно: форматы хранения разные.
- Откройте файловую базу в Конфигураторе:
Администрирование → Выгрузить информационную базу, сохраните.dt. - Создайте пустую серверную базу по шагам выше (без шаблона).
- Откройте её в Конфигураторе:
Администрирование → Загрузить информационную базу, выберите.dt. - Дождитесь окончания загрузки и перезапустите Конфигуратор.
Выгрузку и загрузку выполняют, когда в базах нет пользователей: загрузка .dt требует монопольного доступа и полностью заменяет данные целевой базы.
Загрузка .dt затирает всё, что было в базе-приёмнике. Проверьте, что выбрали именно новую пустую базу, а не рабочую.
Если у базы были пользователи с аутентификацией операционной системы, после переноса проверьте привязку доменных учёток в списке пользователей: имена машин и домены могли поменяться.
5. Ошибки при подключении базы 1С к SQL серверу
ping SRV-1C). Версия клиента должна совпадать с версией сервера до последней цифры.Security, выберите SQL Server and Windows Authentication mode и перезапустите службу SQL. Второй вариант — неверный пароль или выключенный логин.СЕРВЕР\ЭКЗЕМПЛЯР.dbcreator или создайте базу в SSMS заранее и сделайте логин её владельцем (db_owner).srvinfo и перезапустите службу агента вне рабочего времени: перезапуск разрывает все сеансы пользователей.Если ни один вариант не подошёл, посмотрите журнал регистрации базы и технологический журнал сервера 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.
Типовой набор заданий:
- Ежедневно ночью — полная резервная копия базы.
- Ежедневно — обновление статистики (
Update Statistics). - Раз в неделю — перестроение или реорганизация индексов.
- После обновления статистики — очистка процедурного кэша, чтобы SQL построил планы по свежим данным:
DBCC FREEPROCCACHE;
Тяжёлые задания ставьте на время, когда никто не работает и не идут ночные обмены 1С.
Ещё три настройки, о которых забывают
- 🛡️ Исключите из проверки антивирусом файлы
.mdf/.ldfи каталогsrvinfo. - ⚡ Включите в Windows схему электропитания «Высокая производительность».
- 💾 Разнесите данные, журнал и
tempdbпо разным дискам, если такая возможность есть, и создайте уtempdbнесколько файлов данных одинакового размера.
7. Частые вопросы
Можно ли подключить 1С к SQL без сервера 1С:Предприятия?
Подойдёт ли бесплатный SQL Server Express?
Нужна ли лицензия на сервер 1С, если клиентские лицензии уже есть?
Можно ли держать 1С и SQL на одной машине?
Как вернуть серверную базу обратно в файловую?
.dt из серверной базы, создайте пустую файловую и загрузите в неё выгрузку через Конфигуратор.