Подключаем базу 1С к MS SQL или PostgreSQL: поля, права, collation и пути к файлам

· 11 мин

Содержание

При подключении базы 1С 8.3 к серверу БД указывают пять вещей: тип СУБД (MS SQL Server или PostgreSQL), сетевое имя сервера баз данных, имя базы данных, логин и пароль пользователя СУБД и смещение дат (2000 для MS SQL, 0 для PostgreSQL). Всё остальное: collation, права, пути к файлам, память — настраивается на стороне СУБД до того, как вы нажмёте «Готово».

Ошибки обычно появляются на одном из двух этапов. Либо база не создаётся вовсе («Login failed», «no pg_hba.conf entry»), либо создаётся, но через месяц тормозит, потому что лог лежит на одном диске с данными, а под СУБД не ограничена память. Ниже по порядку: что выбрать, что вписать в каждое поле и что донастроить после подключения.

Какую СУБД выбрать для сервера баз данных 1С

Платформа 1С:Предприятие 8.3 в клиент-серверном режиме работает с четырьмя СУБД. На практике в малом и среднем бизнесе выбирают из первых двух.

СУБДКогда выбираютЧто учесть
Microsoft SQL ServerWindows-инфраструктура, есть лицензии, нужен привычный SSMSЛицензия Standard стоит дорого; Express ограничен 10 ГБ на базу и одним сокетом по CPU
PostgreSQL (сборки с патчами для 1С, Postgres Pro)Linux или импортозамещение, нет бюджета на MS SQLНужна именно сборка, адаптированная под 1С; ванильный PostgreSQL без патчей не подойдёт
IBM Db2Редко, в крупных компаниях с готовой экспертизойМало специалистов, мало примеров
Oracle DatabaseНаследие крупных внедренийНовые проекты на нём почти не начинают

💡 Для базы до 20–30 пользователей разница в скорости между MS SQL и PostgreSQL обычно незаметна. Решают лицензии и то, кто будет администрировать сервер.

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

Клиент СУБД на сервере 1С

Сервер 1С сам ходит в СУБД, поэтому драйвер нужен именно на нём, а не на компьютерах бухгалтеров:

  • 🖥️ для MS SQL — SQL Server Native Client или Microsoft OLE DB Driver for SQL Server, разрядность совпадает с разрядностью сервера 1С;
  • 🐘 для PostgreSQL отдельный драйвер не ставят, библиотеки клиента идут с платформой.

Пользователи к серверу БД напрямую не подключаются. Их клиенты обращаются к серверу 1С (агент на порту 1540, менеджер кластера 1541, рабочие процессы — диапазон 1560–1591 по умолчанию), а уже рабочие процессы обращаются к СУБД.

Что указывать в полях подключения к серверу БД

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

ПолеЧто вписатьПример
Кластер серверов 1С:ПредприятияИмя или IP компьютера с сервером 1С; нестандартный порт через двоеточиеsrv1c или srv1c:2541
Имя информационной базы в кластереКороткое имя латиницей без пробелов, по нему пользователи подключаютсяbuh_ooo_romashka
Защищенное соединениеОбычно «Выключено» внутри локальной сети—
Тип СУБДMS SQL Server или PostgreSQL—
Сервер баз данныхСетевое имя сервера СУБД, для именованного экземпляра MS SQL — через обратную косуюsrvsql, srvsql\SQL2019, 10.0.0.15
Имя базы данныхИмя базы внутри СУБД; удобно совпадает с именем в кластереbuh_ooo_romashka
Пользователь сервера БДЛогин СУБД с правами на создание и владение базойuser1c
Пароль пользователя БДПароль этого логина—
Разрешить выдачу лицензий сервером 1С«Да», если лицензии стоят на сервере 1С—
Смещение дат2000 для MS SQL, 0 для PostgreSQL—
Создать базу данных в случае ее отсутствияГалочка, если базу в СУБД ещё не создавали—
Установить блокировку регламентных заданийГалочка для тестовых копий, чтобы копия не грузила банк и не слала отчёты—

Почему смещение дат именно такое

Тип datetime в MS SQL начинается с 1753 года, а 1С хранит даты с 0001 года. Смещение 2000 сдвигает хранение, чтобы любые даты 1С влезли в диапазон. В PostgreSQL ограничения нет, там ставят 0.

Смещение дат задаётся один раз при создании базы данных. Поменять его в свойствах потом нельзя без пересоздания базы через выгрузку .dt.

Если PostgreSQL на нестандартном порту

Порт PostgreSQL по умолчанию — 5432. Если вы его сменили, в поле «Сервер баз данных» пишите параметры подключения целиком:

host=10.0.0.20 port=5433

Для MS SQL на нестандартном порту обычно хватает указать имя экземпляра и запущенную службу SQL Server Browser.

Collation и локаль: какой порядок сортировки выбрать

Порядок сортировки (collation) задаётся на уровне СУБД, и исправлять его на рабочей базе долго и рискованно. Поэтому проверяют его до создания первой базы.

MS SQL Server

  • 🔤 Collation экземпляра — Cyrillic_General_CI_AS. Его выбирают при установке SQL Server на шаге настройки сервера.
  • 🧩 Если экземпляр уже стоит с SQL_Latin1_General_CP1_CI_AS, 1С создаст базу, но tempdb останется латинской. На запросах с временными таблицами возможны конфликты сортировки.
  • 🔎 Проверить текущий collation можно запросом:
SELECT SERVERPROPERTY('Collation') AS ServerCollation;
SELECT name, collation_name FROM sys.databases;

PostgreSQL

Кластер PostgreSQL инициализируют с русской локалью и кодировкой UTF8. На Linux это делают при initdb:

initdb -D /var/lib/pgpro/1c-15/data --locale=ru_RU.UTF-8 --encoding=UTF8

Путь к каталогу данных зависит от сборки и версии, подставьте свой. Перед initdb проверьте, что локаль ru_RU.UTF-8 сгенерирована в системе (locale -a).

Порядок сортировки внутри самой 1С

Это отдельная настройка, не путайте её с collation СУБД. Поле «Язык (Страна)» при создании базы задаёт, как 1С сортирует строки в списках. Для российских конфигураций выбирают «русский (Россия)». Позже её можно посмотреть в Конфигураторе через Администрирование → Региональные установки информационной базы.

Где разместить файлы базы данных на сервере

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

Рекомендуемая раскладка для MS SQL:

ЧтоКудаПочему
Файлы данных .mdfОтдельный быстрый SSDОсновная нагрузка чтения
Журнал транзакций .ldfДругой диск или массивПоследовательная запись, не мешает данным
tempdbСамый быстрый диск, несколько файлов одинакового размера1С активно пишет во временные таблицы
Резервные копииОтдельный диск или сетевое хранилищеКопия на том же диске не спасёт при его отказе

Пути по умолчанию меняют в SSMS: свойства сервера, страница Database Settings, блок Database default locations. После этого все новые базы 1С создаются в нужных папках.

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

Для PostgreSQL каталог данных задают при initdb. Отдельный диск под конкретную базу подключают через табличное пространство (CREATE TABLESPACE), а WAL переносят на отдельный диск ключом --waldir при инициализации.

Права доступа: какие учётные записи нужны

На связке «сервер 1С + СУБД» работают три разные учётки. Их часто путают.

  1. Служба агента сервера 1С (по умолчанию USR1CV8). Это пользователь Windows, под ним работают ragent, rmngr, rphost. Ему нужны права на каталог кластера (srvinfo) и на каталог временных файлов. Администратором Windows его делать не нужно.
  2. Пользователь СУБД — тот, что вписан в поле «Пользователь сервера БД». Под ним рабочие процессы читают и пишут данные.
  3. Пользователи 1С — справочник пользователей внутри информационной базы. К СУБД отношения не имеют.

Что разрешить пользователю СУБД

  • 🔑 MS SQL: логин с проверкой подлинности SQL Server. Для создания баз — серверная роль dbcreator, для работы — роль db_owner в каждой своей базе. Платформа меняет структуру таблиц при обновлении конфигурации, на «только чтение» и db_datareader она работать не будет.
  • 🐘 PostgreSQL: роль с правом CREATEDB и паролем; база создаётся с этой ролью в качестве владельца.
-- MS SQL: отдельный логин для 1С вместо sa
CREATE LOGIN user1c WITH PASSWORD = 'СложныйПароль_2xR9', CHECK_POLICY = ON;
ALTER SERVER ROLE dbcreator ADD MEMBER user1c;
-- PostgreSQL: отдельная роль для 1С вместо postgres
CREATE ROLE user1c WITH LOGIN CREATEDB PASSWORD 'СложныйПароль_2xR9';

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

Для PostgreSQL ещё два файла:

  • postgresql.conf — параметр listen_addresses, чтобы СУБД слушала не только localhost, если сервер 1С стоит на другой машине;
  • pg_hba.conf — строка, разрешающая вход роли user1c с IP сервера 1С по паролю (scram-sha-256 или md5).

После правки pg_hba.conf перечитайте конфигурацию (SELECT pg_reload_conf();), а после смены listen_addresses нужен перезапуск службы PostgreSQL. Перезапуск СУБД обрывает сеансы всех пользователей 1С, делайте его вне рабочего времени.

Ошибки при подключении к серверу БД и что они значат

Большинство сбоев видно сразу в окне создания базы. Текст ошибки СУБД 1С показывает почти дословно.

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

Ещё две ошибки, которые не видны в момент создания:

  • 🐢 Тормоза после переноса. Базу перенесли через .dt, но не пересчитали статистику. Первые дни запросы идут по плохим планам. Лечится обновлением статистики, об этом в следующем разделе.
  • 💾 Закончилось место на диске. На MS SQL с моделью восстановления Full и без резервного копирования журнала файл .ldf растёт бесконечно. Либо настройте бэкап журнала, либо переведите базу в модель Simple, если восстановление на конкретную минуту вам не нужно.

Настройка сервера БД для быстрой работы 1С

После подключения база работает и без тюнинга. Но несколько параметров дают заметную разницу уже на 10–15 пользователях.

MS SQL Server

  1. Ограничьте память. В свойствах сервера, страница Memory, параметр Maximum server memory. Если на машине ещё и сервер 1С, оставьте ему и системе запас. Пример: на сервере с 64 ГБ отдать SQL Server 40–44 ГБ, остальное — рабочим процессам 1С и Windows.
  2. Параллелизм. Для 1С обычно ставят Max Degree of Parallelism = 1: учётные запросы короткие, а параллельные планы чаще вредят, чем ускоряют.
  3. Мгновенная инициализация файлов. Выдайте учётке службы SQL Server право Perform volume maintenance tasks в локальной политике безопасности. Рост файлов данных перестанет подвешивать базу.
  4. Автоприрост. Задайте рост файлов в мегабайтах (например, 512 МБ для данных и 256 МБ для журнала), а не в процентах. Процентный прирост на базе в 200 ГБ означает внезапные 20 ГБ за раз.
  5. Модель восстановления. Full — если нужен откат на точку во времени и настроен бэкап журнала. Simple — если хватает ночных полных копий.

PostgreSQL

Стартовые значения в postgresql.conf для выделенного сервера под 1С:

shared_buffers = 8GB            # около 25% ОЗУ на сервере 32 ГБ
effective_cache_size = 22GB     # около 70% ОЗУ
work_mem = 64MB                 # на одну операцию сортировки
maintenance_work_mem = 1GB      # для VACUUM и создания индексов
max_connections = 500           # с запасом под рабочие процессы 1С

Цифры даны для сервера с 32 ГБ памяти, под другой объём пересчитайте пропорционально. Автоочистку (autovacuum) не отключайте: без неё таблицы распухают, а запросы замедляются. Параметры shared_buffers и max_connections применяются только после перезапуска службы.

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

Без регламента любой сервер со временем замедляется. Минимальный набор:

ЗадачаMS SQLPostgreSQLКак часто
Обновление статистикиПлан обслуживания, шаг Update StatisticsVACUUM ANALYZE или автоочисткаЕжедневно ночью
Перестроение индексовШаг Rebuild Index или Reorganize IndexREINDEX по необходимостиРаз в неделю
Очистка кэша плановDBCC FREEPROCCACHE после обновления статистикиНе требуетсяПосле статистики
Полная резервная копияШаг Back Up Databasepg_dump или pg_basebackupЕжедневно
Проверка целостностиDBCC CHECKDB—Раз в неделю
Перед запуском базы в работу
Выполнено: 0 / 7

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

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