Как развернуть 1С:Предприятие в связке с Microsoft SQL Server
Содержание
Чтобы 1С заработала на MS SQL Server, нужны три вещи: установленный экземпляр SQL Server, SQL-логин с правами на создание баз и запущенный сервер 1С:Предприятие (кластер). Сама база создаётся не в SSMS вручную, а из 1С — при создании информационной базы вы указываете сервер СУБД, и платформа разворачивает структуру сама.
Ниже — полный маршрут для платформы 8.3 (интерфейс «Такси») под Windows Server 2016 и новее: от подготовки сервера до регламентных бэкапов. Пути и параметры привожу те, что стабильны между релизами; где значение зависит от редакции SQL Server, говорю об этом явно.
Что устанавливаем и в каком порядке
Клиент-серверная 1С — это два отдельных продукта на одной или разных машинах:
- 🗄️ Microsoft SQL Server — хранит данные. Подойдёт Standard или Enterprise; бесплатная Express годится только для тестов из-за лимита 10 ГБ на базу и 1 ГБ ОЗУ на экземпляр.
- ⚙️ Сервер 1С:Предприятие (кластер) — исполняет бизнес-логику, обращается к SQL за данными.
Порядок установки:
- Поставьте SQL Server. При установке выберите смешанный режим аутентификации (SQL Server and Windows Authentication) — он нужен, чтобы создать отдельный SQL-логин для 1С.
- Установите SQL Server Management Studio (SSMS) — отдельным дистрибутивом, в составе SQL Server его давно нет.
- Поставьте сервер 1С:Предприятие той же разрядности и не ниже той версии платформы, что у клиентов. Компонент «Сервер 1С:Предприятия» в мастере установки отмечается галочкой; при установке как службы задайте учётную запись, от которой она работает.
SQL Server и сервер 1С можно держать на одной машине — так меньше сетевых задержек. Но тогда жёстко ограничьте память SQL Server (см. раздел про оптимизацию), иначе СУБД заберёт всю ОЗУ и кластеру 1С ничего не останется.
После установки проверьте, что служба SQL Server (MSSQLSERVER) и служба Агент сервера 1С:Предприятия запущены — в оснастке services.msc.
Создаём SQL-логин и выдаём права
1С подключается к SQL Server под отдельной учётной записью. Создавать базу под sa — плохая практика: этот логин всемогущий, его компрометация открывает весь сервер.
Через SSMS:
- Подключитесь к экземпляру, раскройте
Security → Logins. - Правой кнопкой — New Login.
- Выберите SQL Server authentication, задайте имя (например,
usr1cv8) и пароль. - Снимите галку Enforce password policy, если политика домена заставляет менять пароль — служебный логин не должен внезапно «протухать».
Теперь права. Если базу будет создавать сама платформа 1С (обычный сценарий), логину нужны две серверные роли:
| Серверная роль | Зачем нужна |
|---|---|
dbcreator | создавать и удалять базы данных |
processadmin | управлять процессами (1С завершает «зависшие» соединения) |
Назначаются на вкладке Server Roles в свойствах логина. Роль sysadmin выдавать не нужно — это избыточно и небезопасно.
Если база уже создана вручную, логину достаточно роли db_owner на этой конкретной базе (вкладка User Mapping).
Пароль SQL-логина вы введёте в настройках информационной базы 1С. Он хранится на стороне кластера. Смените стандартные и пустые пароли до ввода базы в эксплуатацию — пустой пароль у sa до сих пор встречается на забытых тестовых серверах.
Настраиваем кластер серверов 1С
Кластер 1С управляется через оснастку Администрирование серверов 1С:Предприятия (ярлык появляется после установки сервера). Если оснастка не подключается к центральному серверу, зарегистрируйте её COM-компоненту: от администратора выполните regsvr32 radmin.dll из каталога bin установленной платформы — без этого консоль не видит кластер.
Что проверить и задать в кластере:
- Центральный сервер — машина, где работает агент. По умолчанию он слушает порт
1540. - Менеджер кластера — порт
1541. - Диапазон портов рабочих процессов — по умолчанию
1560:1591. Задаётся в свойствах рабочего сервера, не кластера.
Как именно соединяется клиент: сначала к агенту (порт 1540), тот перенаправляет к менеджеру кластера (1541), а он — к конкретному рабочему процессу из диапазона портов. Консоль администрирования тоже идёт через агент. Поэтому в брандмауэре открывают порты 1540, 1541 и весь рабочий диапазон.
Параметры отказоустойчивости и требования назначения функциональности задаются в свойствах рабочего сервера — не путайте их со свойствами кластера.
Для скриптового управления кластером есть утилита rac (работает через сервис администрирования RAS). Полезные команды: rac cluster list — список кластеров, rac infobase summary list --cluster=<id> — список баз. Полный синтаксис смотрите в rac help — параметры лучше свериться, чем вспоминать по памяти.
Создаём информационную базу
Самый частый способ — из окна запуска 1С:Предприятия.
- В стартовом окне нажмите Добавить.
- Выберите Создание новой информационной базы → нужный вариант (из шаблона конфигурации или пустую).
- Укажите тип расположения: На сервере 1С:Предприятия.
- Заполните параметры подключения:
| Поле | Что вписать |
|---|---|
| Кластер серверов 1С:Предприятия | имя или IP машины с кластером |
| Имя информационной базы | латиницей, без пробелов, например accounting |
| Тип СУБД | MS SQL Server |
| Сервер базы данных | имя SQL-сервера (SERVER\INSTANCE для именованного экземпляра) |
| Имя базы данных | как база будет названа в SQL (обычно совпадает с именем ИБ) |
| Пользователь базы данных | ваш SQL-логин, например usr1cv8 |
| Пароль | пароль этого логина |
- Отметьте галочку Создать базу данных в случае её отсутствия — платформа сама развернёт базу на SQL Server и настроит нужную кодировку. Самостоятельно создавать базу в SSMS не надо.
После этого платформа создаёт пустую базу (или загружает шаблон), и ИБ появляется в списке. Если вы добавляли типовую конфигурацию из поставки, первый запуск в Конфигураторе выполнит начальное заполнение.
Оптимизация производительности SQL Server под 1С
Настройки «из коробки» у SQL Server рассчитаны на универсальную нагрузку. Для 1С несколько параметров меняют заметно.
Ограничьте память SQL Server. По умолчанию СУБД забирает почти всю ОЗУ. В свойствах экземпляра (Properties → Memory) задайте Maximum server memory так, чтобы оставить ОС и, если кластер 1С на той же машине, серверу 1С по несколько гигабайт. Ориентир для выделенного SQL-сервера — оставить ОС около 10–15% памяти.
MAXDOP = 1. Параллелизм запросов (Max Degree of Parallelism) 1С рекомендует отключать — ставить значение 1. Запросы 1С короткие и многочисленные, параллельные планы чаще вредят, чем помогают. Параметр в Properties → Advanced.
Модель восстановления базы. Для базы 1С по умолчанию подойдёт:
- Simple — лог транзакций усекается автоматически, проще в сопровождении. Минус: нельзя восстановиться на точку во времени между полными бэкапами.
- Full — позволяет восстановление на любой момент, но требует регулярного бэкапа лога транзакций, иначе файл лога будет расти до заполнения диска.
Выбирайте Full только если готовы настроить бэкап журнала (раз в 15–60 минут). Для многих рабочих баз Simple + ежедневный полный бэкап достаточно.
tempdb. На нагруженных базах разнесите файлы tempdb — несколько файлов данных одинакового размера (ориентир — по числу ядер, но не больше 8) снижают конкуренцию за служебные страницы.
Отдельные файлы базы (.mdf) и журнала (.ldf) выносите на разные физические диски, а лучше — на SSD/NVMe. Дисковая подсистема для 1С критичнее частоты процессора.
Параметры запуска и режимы работы
Рабочие процессы кластера запускаются автоматически, но несколько моментов стоит знать.
Монопольный доступ. Он нужен не для повседневной работы, а только для отдельных операций: обновления структуры конфигурации (реструктуризация), загрузки .dt, тестирования и исправления базы. В эти моменты пользователи должны выйти. Для планового обслуживания в консоли кластера можно задать блокировку начала сеансов с сообщением и временным окном.
Публикация для тонкого клиента и веб. Если нужен доступ через браузер или тонкий клиент по HTTP, базу публикуют на веб-сервере (IIS или Apache) утилитой публикации. Это отдельная настройка поверх клиент-серверной базы, не обязательная для обычного доступа через толстый/тонкий клиент по протоколу 1С.
Лицензирование. Без действующей лицензии платформа не запустит базу (исключение — учебная версия с ограничениями). Клиентские лицензии выдаёт либо сервер лицензирования, либо локальный ключ; серверная лицензия нужна самому кластеру. Если при входе пользователи упираются в «не найдена лицензия», проверяйте сервер лицензирования, а не настройки SQL.
Диагностика подключения и частые ошибки
Если база не создаётся или клиент не входит, ошибка почти всегда на одном из трёх стыков: клиент→кластер, кластер→SQL, права SQL-логина.
Полезные источники диагностики:
- Технологический журнал платформы (настраивается файлом
logcfg.xmlв каталогеconf) — показывает, что именно отвечает SQL. - SQL Server Error Log и SQL Server Configuration Manager — состояние служб и сетевых протоколов.
- Команда
rac session list --licenses— какие сеансы активны и какие лицензии заняты.
Остановка службы SQL Server или службы агента 1С, перезапуск сервера, снятие рабочего процесса — всё это разрывает сеансы всех пользователей и может оставить незавершённые транзакции. Делайте такие операции только в окно обслуживания и после блокировки начала сеансов.
Резервное копирование и регламентные работы
Выгрузка в .dt из Конфигуратора — это не инструмент регулярного бэкапа рабочей базы: она требует монопольного доступа и на больших базах идёт долго. Для клиент-серверной 1С бэкап делают средствами SQL Server.
Базовый регламент:
- Полный бэкап базы (
BACKUP DATABASE) — ежедневно, обычно ночью. Настраивается планом обслуживания (Maintenance Plans) или заданием SQL Server Agent. - Бэкап журнала транзакций — только если модель восстановления Full; раз в 15–60 минут.
- Проверка целостности (
DBCC CHECKDB) — еженедельно, покажет повреждения страниц до того, как они станут потерей данных. - Обновление статистики и реиндексация — регламентное задание раз в неделю; на больших базах фрагментация индексов замедляет запросы 1С.
Со стороны платформы 1С в консоли кластера настраивают регламентные задания самой базы (пересчёт итогов, полнотекстовый поиск) — это отдельный механизм, он не заменяет бэкап SQL.
Храните бэкапы не только на том же сервере. Копия на другой диск или в другое помещение спасает, когда выходит из строя весь сервер, а не одна база.
Проверяйте восстановление: бэкап, который ни разу не разворачивали на тестовом сервере, — это предположение, а не резервная копия.