Новая информационная база в клиент-серверном режиме: кластер 1С плюс MS SQL
Содержание
Чтобы создать базу на сервере 1С с СУБД SQL, заведите в MS SQL Server логин с ролью dbcreator, затем в окне запуска 1С нажмите Добавить → Создание новой информационной базы → На сервере 1С:Предприятия. В параметрах укажите кластер, тип СУБД «MS SQL Server», имя сервера SQL, имя базы, логин с паролем, смещение дат 2000 и включите флажок «Создать базу данных
в случае ее отсутствия». Пустую базу в SQL Server Management Studio заранее создавать не обязательно: платформа сделает это сама.
Дальше база открывается в Конфигураторе, куда загружают выгрузку .dt или файл конфигурации .cf. Инструкция ниже написана для платформы 8.3 и Windows Server 2016 и новее. От конфигурации порядок не зависит: БП, ЗУП, УТ и ERP создаются одинаково.
1. Подготовка MS SQL Server к созданию базы 1С
Перед тем как создать базу 1С на SQL, проверьте четыре вещи на сервере СУБД. Если пропустить любую, мастер создания упадёт с ошибкой на последнем шаге.
📌 Режим проверки подлинности. 1С обычно подключается к SQL под отдельным SQL-логином. Для этого нужен смешанный режим. В SSMS откройте свойства сервера, вкладка Security, выберите SQL Server and Windows Authentication mode. Изменение вступит в силу после перезапуска службы SQL Server.
📌 Сетевой протокол. Если сервер 1С и SQL стоят на разных машинах, в SQL Server Configuration Manager включите протокол TCP/IP для нужного экземпляра. Стандартный порт — 1433. Откройте его в брандмауэре сервера СУБД.
📌 Сортировка (collation). Для русскоязычных баз сервер SQL ставят с сортировкой Cyrillic_General_CI_AS. Её выбирают при установке SQL Server, потом поменять сложно. От неё зависит и служебная база tempdb, которой пользуется 1С.
📌 Клиентская библиотека. Рабочие процессы сервера 1С обращаются к SQL через клиентскую библиотеку доступа. Если SQL и сервер 1С стоят на одной машине, она уже есть. Если на разных — установите на сервер 1С клиентские компоненты той же версии SQL Server.
Сначала узнайте точное имя экземпляра SQL. Экземпляр по умолчанию указывается просто именем сервера: SRV-SQL. Именованный — через обратную косую черту: SRV-SQL\SQL2019. Ошибка в этом поле — самая частая причина неудачи.
Создавать ли пустую базу в SSMS заранее
Это необязательно. Когда флажок «Создать базу данных в случае ее отсутствия» включён, платформа сама выполнит CREATE DATABASE от имени указанного логина.
Заранее базу создают в двух случаях:
- 🗂️ файлы данных и журнала нужно положить на конкретные диски, а не в папку по умолчанию;
- 🔒 политика безопасности не разрешает давать логину 1С право создавать базы.
Тогда в SSMS создайте базу с сортировкой Cyrillic_General_CI_AS, выберите модель восстановления и назначьте логин 1С её владельцем (скрипт ниже). В мастере 1С укажите это же имя базы данных.
2. Логин SQL для 1С и права доступа
Работать под sa можно, но не нужно. У этого логина полные права на весь сервер СУБД. Пароль от него будет храниться в параметрах кластера 1С, а базы на одном экземпляре SQL часто обслуживают разные люди.
Правильнее завести отдельный логин. Скрипт для SSMS:
-- логин для сервера 1С
CREATE LOGIN [user1c] WITH PASSWORD = N'Сложный_Пароль_123', CHECK_POLICY = OFF;
-- право создавать новые базы
ALTER SERVER ROLE [dbcreator] ADD MEMBER [user1c];
Роли dbcreator достаточно, чтобы 1С создала базу и стала работать в ней как владелец. Если базу вы уже создали вручную, роль на сервере не нужна. Достаточно сделать логин владельцем этой базы:
ALTER AUTHORIZATION ON DATABASE::[buh_prod] TO [user1c];
| Вариант прав | Когда подходит | Риск |
|---|---|---|
sa или роль sysadmin | тестовый стенд, одна база | пароль открывает весь сервер СУБД |
Отдельный логин + dbcreator | 1С сама создаёт базы | логин может создать любую новую базу |
| Владелец только одной базы | базы создаёт администратор SQL | для новой базы права выдают отдельно |
Вход без SQL-логина
Можно оставить поля «Пользователь базы данных» и «Пароль» пустыми. Тогда к SQL подключается учётная запись, под которой работает служба сервера 1С (по умолчанию USR1CV8), через проверку подлинности Windows.
Для этого служба 1С должна работать под доменной учётной записью, а в SQL нужно завести логин для этой записи и выдать ему те же права. В рабочей группе без домена удобнее SQL-логин.
3. Кластер серверов 1С: что проверить перед созданием базы
Сервер 1С:Предприятия должен быть установлен и запущен как служба. Создавать в консоли кластер вручную не нужно: при первой установке он появляется сам, с менеджером на порту 1541.
Схема подключения выглядит так:
- Клиент или консоль обращается к агенту сервера 1С — порт 1540.
- Агент передаёт работу менеджеру кластера — порт 1541.
- Сеансы обслуживают рабочие процессы на портах из диапазона, который задаётся в свойствах рабочего сервера. По умолчанию это 1560–1591.
Все эти порты должны быть открыты в брандмауэре сервера 1С для клиентских компьютеров. Сам SQL Server клиентам не виден: к нему ходят только рабочие процессы 1С.
Консоль администрирования
Консоль «Администрирование серверов 1С Предприятия» ставится вместе с платформой. Если в меню она не открывается или пишет об ошибке оснастки, зарегистрируйте библиотеку radmin.dll из папки bin нужной версии платформы. Командную строку запустите от имени администратора:
"C:\Program Files\1cv8\8.3.24.1548\bin\RegMSC.cmd"
Если такого файла в вашей версии нет, выполните регистрацию напрямую:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер версии в пути замените на установленный у вас. Версия консоли должна совпадать с версией сервера 1С.
Если в кластере заданы администраторы, при создании базы платформа запросит имя и пароль администратора кластера. Без них база не создастся, даже если права в SQL выданы правильно.
4. Как создать базу на сервере 1С и SQL: два способа
Результат у обоих способов одинаковый: база зарегистрирована в кластере 1С и физически создана в SQL. Первый удобнее, если сразу нужно открыть базу на своём компьютере. Второй — когда администратор работает прямо на сервере.
Способ 1. Через окно запуска 1С
- Запустите 1С:Предприятие и нажмите
Добавить. - Выберите
Создание новой информационной базы. - Укажите вариант: создать базу из шаблона (если шаблоны конфигураций установлены) или
Создание информационной базы без конфигурации. Второй вариант нужен, когда вы будете загружать.dt. - Введите наименование базы, как оно будет видно в списке, и выберите
На сервере 1С:Предприятия. - Заполните параметры подключения (таблица ниже) и нажмите
Далее. - Оставьте параметры запуска по умолчанию и нажмите
Готово.
| Поле | Что указать |
|---|---|
| Кластер серверов 1С:Предприятия | имя сервера 1С; если менеджер кластера не на 1541 — с портом: SRV-1C:1641 |
| Имя информационной базы в кластере | короткое латиницей, без пробелов: buh_prod |
| Защищенное соединение | «Выключено», если нет особых требований |
| Тип СУБД | MS SQL Server |
| Сервер баз данных | имя экземпляра SQL: SRV-SQL или SRV-SQL\SQL2019 |
| Имя базы данных | имя базы в SQL, удобно совпадающее с именем в кластере |
| Пользователь и пароль базы данных | логин из раздела 2 |
| Смещение дат | 2000 |
| Создать базу данных в случае ее отсутствия | включить |
| Установить блокировку регламентных заданий | включить для копий и тестовых баз |
Смещение дат для MS SQL Server — 2000. Тип datetime в SQL не хранит даты раньше 1753 года, а 1С должна уметь записывать даты с 0001 года. Значение задаётся только при создании базы. Ошибку потом исправляют выгрузкой в .dt и загрузкой в новую базу.
Блокировку регламентных заданий обязательно ставьте для копии рабочей базы. Иначе копия начнёт сама загружать курсы валют, обмениваться с ЭДО и выгружать данные на сайт параллельно с рабочей базой.
Способ 2. Через консоль кластера
- Откройте консоль, разверните
Central 1C:Enterprise 8.3 servers→ имя сервера →Кластеры→ кластер. - Щёлкните правой кнопкой по ветке
Информационные базыи выберитеСоздать→Информационная база. - Заполните те же поля, что в таблице выше. Здесь же есть флажок «Разрешить выдачу лицензий сервером 1С:Предприятия».
- Нажмите
OK. Платформа создаст базу в SQL и добавит её в список кластера.
После этого базу нужно добавить в список на рабочих местах пользователей: Добавить → Добавление в список существующей информационной базы → На сервере 1С:Предприятия. Там указывают только кластер и имя базы в кластере.
5. Первый запуск созданной базы в Конфигураторе
Только что созданная база без конфигурации пустая. Откройте её в режиме Конфигуратор: при первом входе пользователей нет, вход идёт без пароля.
Дальше один из двух путей.
Перенос существующей базы из .dt:
- Меню
Администрирование → Загрузить информационную базу. - Выберите файл
.dtи подтвердите загрузку. - После сообщения об успехе Конфигуратор предложит перезапуститься. Входите уже под пользователем из загруженной базы.
Новая база из файла поставки .cf:
- Меню
Конфигурация → Открыть конфигурацию, затемКонфигурация → Загрузить конфигурацию из файла. - Выберите
.cfи согласитесь обновить конфигурацию базы данных. - Запустите базу в режиме 1С:Предприятие — программа выполнит начальное заполнение.
Загрузка .dt полностью заменяет данные в базе. На этапе создания это безопасно, но если по ошибке указать существующую рабочую базу, её содержимое будет потеряно. Перед загрузкой проверьте имя базы в заголовке окна Конфигуратора.
Загрузка .dt требует монопольного доступа. В новой базе других сеансов нет, поэтому вопрос возникает только при повторной загрузке, когда пользователи уже начали работать.
6. Настройка MS SQL Server под базу 1С и производительность
Созданная по умолчанию база работает, но для рабочей нагрузки стоит проверить несколько параметров SQL Server.
| Параметр | Рекомендация | Зачем |
|---|---|---|
max server memory | оставить ОС и серверу 1С память, если они на одной машине | иначе SQL заберёт почти всю ОЗУ, рабочие процессы 1С начнут тормозить |
max degree of parallelism | 1 | параллельные планы на коротких запросах 1С дают ожидания и взаимоблокировки |
| Модель восстановления | Simple для тестовых баз, Full с бэкапом журнала для рабочих | при Full без бэкапов журнала файл .ldf растёт без ограничений |
Размещение tempdb | быстрый диск, несколько файлов данных одного размера | 1С активно использует временные таблицы |
| Обслуживание | план с обновлением статистики и перестроением индексов | устаревшая статистика — частая причина медленных отчётов |
Пример для сервера с 32 ГБ ОЗУ, где на той же машине работает сервер 1С: под SQL оставляют около 20 ГБ, остальное — системе и рабочим процессам.
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 20480;
EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;
Если задан начальный размер файла данных, база не будет расти мелкими шагами. Для базы, которая после загрузки .dt занимает 15 ГБ, разумно сразу выставить 20 ГБ и прирост по 1 ГБ.
Выдача лицензий сервером
Флажок «Разрешить выдачу лицензий сервером 1С:Предприятия» в свойствах базы решает, может ли сервер выдавать клиенту лицензию со своей стороны. Если клиентские лицензии стоят на сервере, флажок должен быть включён. Без лицензии сеанс не запустится.
7. Ошибки при создании базы на SQL Server и их причины
После нажатия Готово платформа подключается к SQL и создаёт таблицы. Если что-то не так, текст ошибки приходит от SQL Server почти дословно, и по нему легко найти причину.
Простая проверка, которая экономит время: зайдите на сервер 1С, откройте SSMS и подключитесь к SQL под тем же логином и с тем же именем экземпляра, что в мастере 1С. Если SSMS подключилась, проблема на стороне 1С. Если нет — в SQL или сети.
Как убедиться, что база создана правильно
- ✅ В консоли кластера база видна в ветке
Информационные базы, в её свойствах стоит нужный сервер SQL и имя базы. - ✅ В SSMS появилась база с таким именем, в ней сотни таблиц с именами вида
_Reference…,_Document…. - ✅ Конфигуратор открывается с рабочего места пользователя, а не только с сервера.
- ✅ В режиме 1С:Предприятие сеанс появляется в консоли кластера в списке сеансов базы.
Частые вопросы
Можно ли разместить сервер 1С и SQL Server на одной машине?
max server memory, чтобы SQL не забрал память у рабочих процессов 1С.Как удалить базу из кластера, не удаляя данные в SQL?
Можно ли сменить сервер SQL у готовой базы?
.dt, затем в свойствах информационной базы в консоли кластера укажите новый сервер баз данных. Делайте это вне рабочего времени: сеансы пользователей нужно завершить.