Новая информационная база на сервере 1С с MS SQL или PostgreSQL: от кластера до первого запуска

· 10 мин

Содержание

Новую базу 1С на SQL добавляют в консоли администрирования кластера: Информационные базы → Создать → Информационная база. В карточке указывают сервер СУБД, имя базы в SQL, логин с правом создавать базы и ставят флажок «Создать базу данных в случае ее отсутствия». Сервер 1С сам создаст пустую базу в MS SQL или PostgreSQL. Потом в неё загружают выгрузку .dt или конфигурацию .cf — и база готова к работе.

Чаще всего на этом пути спотыкаются о права: у логина нет роли dbcreator, служба 1С не видит SQL-сервер, закрыт порт. Ниже — порядок действий, при котором база создаётся с первого раза, и разбор ошибок, если что-то пошло не так.

Что проверить до добавления базы в 1С на SQL

Добавление базы — пятиминутная операция, если окружение готово. Проверьте четыре вещи.

Сервер 1С работает. На сервере открыт services.msc, служба «Агент сервера 1С:Предприятия 8.3» запущена. Для консоли администрирования нужна ещё служба ras (сервер администрирования), если вы работаете через утилиту rac или веб-консоли. Классическая консоль MMC подключается напрямую к агенту.

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

regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"

Номер в пути подставьте свой — тот, что совпадает с версией запущенного сервера. Консоль от другой версии платформы к серверу не подключится.

СУБД доступна с сервера 1С. Если 1С и SQL стоят на разных машинах, проверьте сетевую доступность:

powershell Test-NetConnection SRV-SQL -Port 1433

Для MS SQL по умолчанию это порт 1433, для PostgreSQL — 5432. Именованный экземпляр MS SQL (SRV-SQL\MSSQL2019) слушает динамический порт, и тогда нужна служба SQL Server Browser на UDP 1434.

Есть логин СУБД с нужными правами — об этом отдельный раздел ниже.

Что проверяемГдеПризнак проблемы
Служба агента 1Сservices.msc на сервере 1СКонсоль не видит кластер
Версия консолиradmin.dll в каталоге bin«Несоответствие версий клиента и сервера»
Порт СУБДTest-NetConnectionТаймаут при создании базы
Режим аутентификации MS SQLСвойства сервера в SSMS → SecurityОшибка входа для логина sa или своего логина

Логин для 1С в MS SQL обычно создают с проверкой подлинности SQL Server. Для этого в свойствах сервера SQL должен быть включён смешанный режим (SQL Server and Windows Authentication mode). После переключения режима службу SQL Server перезапускают — предупредите пользователей, все подключения к СУБД оборвутся.

Права в MS SQL и PostgreSQL: какой логин дать серверу 1С

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

MS SQL Server

Рабочая схема — отдельный логин под 1С:

  1. В SQL Server Management Studio откройте Security → Logins → New Login.
  2. Выберите SQL Server authentication, задайте имя (например, usr1c) и пароль.
  3. Снимите «Enforce password expiration» — иначе через месяц-два все базы перестанут открываться.
  4. На вкладке Server Roles отметьте dbcreator. Этого хватает, чтобы сервер 1С создал базу и стал её владельцем.
  5. Сохраните.

Тот же логин можно создать запросом:

CREATE LOGIN usr1c WITH PASSWORD = 'СложныйПароль_2x!', CHECK_POLICY = OFF;
ALTER SERVER ROLE dbcreator ADD MEMBER usr1c;

Если базу в SQL уже создал администратор СУБД, роль dbcreator не нужна. Достаточно сделать логин владельцем этой базы (роль db_owner).

PostgreSQL

Для 1С используют сборку PostgreSQL с доработками под платформу — от фирмы 1С или Postgres Pro. Ванильная сборка без патчей с 1С не работает .

Логин создают ролью с правом создавать базы:

CREATE ROLE usr1c WITH LOGIN PASSWORD 'СложныйПароль_2x!' CREATEDB;

Проверьте файл pg_hba.conf: в нём должна быть строка, разрешающая подключение с адреса сервера 1С. После правки конфигурацию перечитывают командой SELECT pg_reload_conf(); — перезапуск службы для этого не нужен.

Пустые поля «Пользователь сервера БД» и «Пароль» в карточке базы означают вход в MS SQL под учётной записью службы 1С (обычно USR1CV8) через Windows-аутентификацию. Тогда права dbcreator нужно выдать именно этой доменной или локальной учётке, а не SQL-логину.

Как добавить базу в кластер сервера 1С через консоль

Основной способ — через консоль кластера. Он даёт полный контроль над параметрами.

Шаг 1. Откройте кластер

В консоли разверните дерево: Центральные серверы 1С:Предприятия 8.3 → <имя сервера> → Кластеры → Локальный кластер → Информационные базы. Если сервер в дереве ещё не добавлен, щёлкните правой кнопкой по «Центральные серверы», выберите «Создать → Центральный сервер 1С:Предприятия 8.3» и укажите имя машины. Порт по умолчанию — 1540.

Если у кластера задан администратор, консоль спросит его логин и пароль.

Шаг 2. Заполните карточку новой базы

Правой кнопкой по «Информационные базы» → «Создать» → «Информационная база». Поля карточки:

ПолеЧто вписатьПример
ИмяИмя базы в кластере, без пробеловbuh_ooo_romashka
ОписаниеЧеловеческое названиеБухгалтерия ООО «Ромашка»
Защищенное соединениеОставить «выключено»—
Сервер баз данныхИмя машины SQL или сервер\экземплярSRV-SQL
Тип СУБДMSSQLServer или PostgreSQLMSSQLServer
База данныхИмя базы в СУБДbuh_ooo_romashka
Пользователь сервера БДЛогин из прошлого разделаusr1c
Пароль пользователя БДЕго пароль—
Разрешить выдачу лицензий сервером 1С«Да», если есть серверные клиентские лицензииДа
Язык (Страна)русский (Россия)—
Смещение дат2000 для MS SQL, 0 для PostgreSQL2000

Внизу отметьте «Создать базу данных в случае ее отсутствия». Флажок «Установить блокировку регламентных заданий» ставьте, если база — копия рабочей: иначе она начнёт параллельно загружать курсы валют, отправлять отчёты и обмениваться данными от имени настоящей организации.

Имя базы в кластере и имя базы в СУБД удобно делать одинаковыми. Через год, когда баз станет двадцать, вы скажете себе спасибо.

Шаг 3. Подтвердите создание

Нажмите «ОК». Сервер 1С подключится к СУБД, создаст базу и пустые служебные таблицы. На это уходит от нескольких секунд до минуты. Новая строка появится в списке информационных баз.

Альтернатива: через окно запуска 1С

Если консоли под рукой нет, базу можно создать из списка баз на любом клиентском компьютере: Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации (или из шаблона) → вариант «На сервере 1С:Предприятия». Мастер спросит те же параметры: кластер, имя базы, СУБД, логин, смещение дат. Результат одинаковый — база появится в кластере и сразу добавится в ваш список.

Чтобы подключить пользователей к уже созданной базе, им достаточно в окне запуска выбрать Добавить → Добавление в список существующей информационной базы → На сервере 1С:Предприятия и указать сервер и имя базы из кластера.

Загрузка конфигурации и данных в созданную базу

После шага 3 база пустая. Дальше два сценария.

Перенос существующей базы (файл .dt). Откройте новую базу в Конфигураторе и выполните Администрирование → Загрузить информационную базу, укажите файл выгрузки. Загрузка .dt полностью заменяет содержимое — и конфигурацию, и данные. Для неё нужен монопольный доступ, но в свежесозданной базе никого нет, так что это не проблема.

Чистая база из типовой конфигурации (файл .cf). В Конфигураторе: Конфигурация → Открыть конфигурацию, затем Конфигурация → Загрузить конфигурацию из файла. Программа спросит про обновление конфигурации базы данных — согласитесь и примите изменения структуры. Потом запустите базу в режиме «1С:Предприятие»: типовые конфигурации при первом запуске выполняют начальное заполнение.

СценарийИсточникКоманда в КонфигуратореЧто получите
Перенос из файловой базы.dtАдминистрирование → Загрузить информационную базуКопию данных и конфигурации
Новая типовая база.cfКонфигурация → Загрузить конфигурацию из файлаПустую базу с типовой конфигурацией
Новая база из шаблонаустановленный шаблонМастер в окне запускаТо же, что из .cf

Крупный .dt (десятки гигабайт) загружается часами. Запускайте загрузку на самом сервере 1С или на машине в той же сети: по VPN-каналу она идёт в разы дольше и может оборваться на середине.

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

Новая база на SQL готова к работе
Выполнено: 0 / 6

Ошибки при создании базы на SQL и как их разобрать

Тексты ниже — то, что показывает окно ошибки 1С. Внутри обычно есть строка от самой СУБД, она и подсказывает причину.

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

Ещё две ситуации, которые не всегда дают понятный текст:

  • 🔤 Неверная сортировка (collation) MS SQL. Если базу в SQL создавали вручную со своей сортировкой, возможны ошибки при запросах и сравнении строк. Безопаснее давать серверу 1С создавать базу самому — он выбирает подходящую сортировку.
  • 🔐 Вход под учёткой службы. Если поля логина в карточке пустые, а служба 1С работает под USR1CV8 без прав в SQL, ошибка будет про вход учётной записи вида DOMAIN\USR1CV8. Решение — выдать права этой учётке или указать SQL-логин явно.

Не удаляйте «неудачную» базу из кластера с флажком «Удалить базу данных» — это стирает базу в СУБД безвозвратно. Если сомневаетесь, удаляйте только регистрацию в кластере, а саму базу в SQL оставляйте до выяснения.

Обслуживание новой базы на SQL Server

База на SQL без обслуживания со временем тормозит: растёт журнал транзакций, устаревает статистика. Настройте это сразу, пока база маленькая.

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

Для большинства баз 1С подходит модель восстановления Simple: журнал транзакций не растёт бесконечно. Модель Full нужна, если вы делаете резервные копии журнала и хотите восстанавливаться на любую минуту. При Full без копий журнала файл .ldf за пару месяцев вырастает до размеров диска.

ALTER DATABASE buh_ooo_romashka SET RECOVERY SIMPLE;

План обслуживания

В SSMS: Management → Maintenance Plans → Maintenance Plan Wizard. Минимальный набор задач:

  1. 💾 Полная резервная копия — ежедневно, ночью. Хранить копии не на том же диске, что и база.
  2. 📊 Обновление статистики (Update Statistics) — ежедневно. Без него запросы 1С выбирают плохие планы выполнения.
  3. 🔧 Перестроение индексов (Rebuild Index) — раз в неделю, в выходные.
  4. 🧹 Очистка процедурного кэша (DBCC FREEPROCCACHE) — после обновления статистики, чтобы SQL заново построил планы.

Для PostgreSQL аналог — регулярный VACUUM ANALYZE (часть работы делает автовакуум) и резервные копии через pg_dump или pg_basebackup.

Резервная копия средствами СУБД и выгрузка .dt — не одно и то же. Копия SQL делается без остановки работы и восстанавливается быстрее. Выгрузку .dt удобно делать перед обновлением конфигурации как дополнительную страховку.

Ограничение памяти SQL Server

Если 1С и MS SQL стоят на одной машине, ограничьте максимальную память SQL (Properties → Memory → Maximum server memory). Иначе SQL заберёт почти всю память, а рабочим процессам 1С её не хватит. Ориентир — оставить серверу 1С и системе не меньше трети ОЗУ.

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

Можно ли держать несколько баз 1С на одном экземпляре MS SQL?
Да. Каждая база 1С — отдельная база в СУБД, на одном экземпляре их могут быть десятки. Ограничение — ресурсы сервера, а не число баз.
Что выбрать для новой базы: MS SQL или PostgreSQL?
Оба варианта поддерживаются платформой. MS SQL требует лицензии Microsoft, PostgreSQL бесплатен, но нужна сборка с патчами под 1С. На PostgreSQL чаще переходят из-за стоимости лицензий.
Зачем нужно смещение дат 2000?
MS SQL хранит даты с ограничением по нижней границе, а 1С работает с датами от 0001 года. Смещение 2000 сдвигает даты при записи и снимает это ограничение. Для PostgreSQL ставят 0.
Сколько клиентских лицензий нужно для новой базы на сервере?
Клиентские лицензии считаются по сеансам пользователей, а не по базам. Новая база не требует отдельных клиентских лицензий, но для работы самого сервера нужна серверная лицензия.
Как перенести файловую базу на SQL без выгрузки .dt?
Штатный путь — именно через выгрузку и загрузку .dt: файловая и серверная базы хранят данные в разных форматах, просто скопировать файл 1Cv8.1CD в SQL нельзя.