Подключаем базу 1С к MS SQL или PostgreSQL: поля, права, collation и пути к файлам
Содержание
При подключении базы 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 Server | Windows-инфраструктура, есть лицензии, нужен привычный 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С (по умолчанию
USR1CV8). Это пользователь Windows, под ним работаютragent,rmngr,rphost. Ему нужны права на каталог кластера (srvinfo) и на каталог временных файлов. Администратором Windows его делать не нужно. - Пользователь СУБД — тот, что вписан в поле «Пользователь сервера БД». Под ним рабочие процессы читают и пишут данные.
- Пользователи 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
- Ограничьте память. В свойствах сервера, страница
Memory, параметрMaximum server memory. Если на машине ещё и сервер 1С, оставьте ему и системе запас. Пример: на сервере с 64 ГБ отдать SQL Server 40–44 ГБ, остальное — рабочим процессам 1С и Windows. - Параллелизм. Для 1С обычно ставят
Max Degree of Parallelism = 1: учётные запросы короткие, а параллельные планы чаще вредят, чем ускоряют. - Мгновенная инициализация файлов. Выдайте учётке службы SQL Server право
Perform volume maintenance tasksв локальной политике безопасности. Рост файлов данных перестанет подвешивать базу. - Автоприрост. Задайте рост файлов в мегабайтах (например, 512 МБ для данных и 256 МБ для журнала), а не в процентах. Процентный прирост на базе в 200 ГБ означает внезапные 20 ГБ за раз.
- Модель восстановления. 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 SQL | PostgreSQL | Как часто |
|---|---|---|---|
| Обновление статистики | План обслуживания, шаг Update Statistics | VACUUM ANALYZE или автоочистка | Ежедневно ночью |
| Перестроение индексов | Шаг Rebuild Index или Reorganize Index | REINDEX по необходимости | Раз в неделю |
| Очистка кэша планов | DBCC FREEPROCCACHE после обновления статистики | Не требуется | После статистики |
| Полная резервная копия | Шаг Back Up Database | pg_dump или pg_basebackup | Ежедневно |
| Проверка целостности | DBCC CHECKDB | — | Раз в неделю |
Частые вопросы
Можно ли держать сервер 1С и СУБД на одной машине?
Хватит ли бесплатного MS SQL Express для 1С?
Как перенести базу 1С с MS SQL на PostgreSQL?
.dt через Конфигуратор, создайте новую базу на PostgreSQL со смещением дат 0 и загрузите в неё выгрузку. Бэкап средствами MS SQL для этого не подходит.