Перенос 1С на MS SQL: от установки драйвера до первой информационной базы в кластере
Содержание
Базу 1С нельзя «положить» на SQL-сервер напрямую: её создают через кластер серверов
1С:Предприятия, а он уже сам создаёт базу данных в СУБД. Добавить базу на сервер SQL можно двумя способами: в консоли администрирования серверов (Информационные базы → Создать → Информационная база) или из окна запуска 1С кнопкой Добавить с вариантом «На сервере 1С:Предприятия». Результат одинаковый, консоль удобнее администратору, окно запуска — тому, кто сразу будет работать с базой.
Если база уже есть в файловом варианте, порядок такой: создаёте пустую серверную базу
, затем загружаете в неё выгрузку .dt через Конфигуратор. Если есть резервная копия SQL (.bak), её восстанавливают средствами СУБД, а в кластере регистрируют информационную базу, которая смотрит на эту базу данных.
Схема работает для платформы 8.3 и СУБД Microsoft SQL Server и PostgreSQL. Ниже примеры в основном для MS SQL, отличия для PostgreSQL оговорены отдельно.
Что подготовить до создания серверной базы 1С
Связка состоит из трёх частей. Каждая должна работать до того, как вы откроете консоль.
| Компонент | Что проверить |
|---|---|
| 🗄️ СУБД (MS SQL Server или PostgreSQL) | служба запущена, есть логин для 1С, сервер доступен по сети |
| ⚙️ Сервер 1С:Предприятия | служба агента запущена, кластер создан, порты открыты |
| 💻 Клиент 1С | установлен той же версии, что и сервер 1С, вплоть до номера сборки |
Настройки MS SQL Server
- При установке SQL Server выберите смешанный режим проверки подлинности (SQL Server и Windows). 1С чаще всего подключается SQL-логином, а не учётной записью Windows.
- Задайте параметры сортировки сервера
Cyrillic_General_CI_AS. С ней 1С работает без сюрпризов при сравнении и сортировке строк. - Создайте логин для 1С. Для создания новых баз ему нужна серверная роль
dbcreator, для работы с уже существующей базой — рольdb_ownerв этой базе. Подsaработать можно, но лучше не давать 1С больше прав, чем нужно. - Ограничьте память SQL Server параметром
max server memory. Если оставить значение по умолчанию, SQL Server заберёт почти всю оперативную память, и рабочим процессам 1С на том же сервере её не хватит.
Установщик и логин удобно настроить в SQL Server Management Studio. Логин с паролем создаётся одной командой:
CREATE LOGIN user1c WITH PASSWORD = 'Сложный_Пароль_2', CHECK_POLICY = ON;
ALTER SERVER ROLE dbcreator ADD MEMBER user1c;
Клиент доступа к СУБД на сервере 1С
С MS SQL Server платформа работает через провайдер OLE DB, а не через ODBC. Настраивать источник данных ODBC (DSN) не нужно. Нужен установленный клиент доступа: SQL Server Native Client или Microsoft OLE DB Driver for SQL Server — какой из них поддерживает ваша сборка платформы, смотрите в её системных требованиях.
Ставят клиент на тот компьютер, где работает сервер 1С. Если SQL Server и сервер 1С на одной машине, клиент обычно уже есть после установки SQL Server.
Для PostgreSQL используют сборку, адаптированную под 1С: от фирмы 1С или Postgres Pro. Обычный PostgreSQL из репозитория дистрибутива без патчей для 1С создать базу не даст.
Сеть и порты
- 🔌
1433— порт MS SQL Server по умолчанию (для именованного экземпляра порт может быть динамическим, тогда нужна служба SQL Server Browser). - 🔌
5432— PostgreSQL. - 🔌
1540— агент сервера 1С,1541— менеджер кластера. - 🔌
1560–1591— диапазон рабочих процессов по умолчанию; задаётся в свойствах рабочего сервера.
Все эти порты должны быть открыты в брандмауэре между клиентами, сервером 1С и сервером СУБД.
Регистрация кластера серверов 1С в консоли
Консоль кластера — оснастка MMC «Администрирование серверов 1С Предприятия». Она подключается к агенту сервера 1С по порту 1540.
Если консоль не открывается
Оснастке нужна зарегистрированная библиотека radmin.dll той же версии, что и сервер. После обновления платформы консоль часто перестаёт работать как раз из-за этого. В меню «Пуск» в группе 1С есть ярлык «Регистрация утилиты администрирования серверов». Или вручную, из командной строки от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"
Номер версии в пути замените на свой. Если в системе стоят и 32-, и 64-битная платформа, регистрируйте библиотеку той разрядности, что и консоль MMC.
Добавление центрального сервера
- Откройте консоль, встаньте на узел «Central 1C:Enterprise 8.3 servers».
- Правой кнопкой →
Создать → Центральный сервер 1С:Предприятия 8.3. - Укажите имя компьютера, где запущен агент сервера, протокол
tcpи IP-порт1540. - Раскройте сервер: внутри должен появиться кластер, обычно «Локальный кластер» с портом
1541.
Если кластера нет, а служба агента работает, проверьте, что служба запущена от пользователя с правами на свой каталог данных (по умолчанию srvinfo). Кластер создаётся при первом старте службы с ключом -regport.
Не удаляйте кластер и не пересоздавайте его, чтобы «починить» подключение. Вместе с кластером пропадёт регистрация всех информационных баз, а сами базы в СУБД останутся без привязки.
Если на кластере задан администратор, консоль спросит логин и пароль при первом обращении к нему.
Создание информационной базы на сервере SQL через консоль
- Раскройте кластер, правой кнопкой по узлу «Информационные базы» →
Создать → Информационная база. - Заполните поля формы по таблице ниже.
- Нажмите «ОК». Кластер создаст базу данных в СУБД и зарегистрирует информационную базу.
| Поле | Что указать |
|---|---|
| Имя | имя ИБ в кластере, латиницей без пробелов: buh_ooo_romashka |
| Описание | любой понятный текст |
| Защищенное соединение | «Выключено», если не настроен TLS между клиентом и сервером |
| Сервер баз данных | имя сервера SQL; для именованного экземпляра SRV-SQL\SQL2019 |
| Тип СУБД | MSSQLServer или PostgreSQL |
| База данных | имя базы в СУБД; удобно совпадает с именем ИБ |
| Пользователь сервера БД / пароль | логин, созданный для 1С |
| Разрешить выдачу лицензий сервером 1С:Предприятия | «Да», если используете серверные (программные) лицензии на клиентские места |
| Язык (Страна) | «русский (Россия)» |
| Смещение дат | для MS SQL — 2000, для PostgreSQL — 0 |
| Создать базу данных в случае ее отсутствия | отметить, если базы в СУБД ещё нет |
| Установить блокировку регламентных заданий | отметить для копии и тестовой базы |
Почему смещение дат 2000
Тип даты в MS SQL Server не хранит годы раньше 1753, а 1С допускает даты с первого года. Смещение 2000 сдвигает хранимые даты так, что весь диапазон помещается. Выбирают его один раз при создании базы. Если вы подключаете ИБ к уже существующей базе данных, смещение должно совпадать с тем, с которым её создавали, иначе все даты в программе съедут на 2000 лет.
Как добавить базу на сервер из окна запуска
Тот же результат даёт обычное окно запуска 1С:
Добавить→ «Создание новой информационной базы».- Выберите пустую базу или шаблон конфигурации.
- Тип расположения — «На сервере 1С:Предприятия».
- Заполните кластер серверов (имя сервера 1С, при нестандартном порте —
srv1c:1541), имя ИБ в кластере и те же параметры СУБД, что в таблице выше.
Если база в кластере уже создана, а нужно только добавить её себе в список, выберите «Добавление в список существующей информационной базы» и укажите кластер и имя ИБ. Пароль СУБД при этом не нужен.
Параметры соединения и проверка подлинности
Логин SQL или учётная запись Windows
| Вариант | Как настроить | Когда выбирают |
|---|---|---|
| SQL-логин | логин и пароль в полях пользователя сервера БД | стандартный вариант, проще всего диагностировать |
| Проверка подлинности Windows | поля пользователя оставить пустыми, права в SQL Server выдать учётной записи службы сервера 1С | когда политика безопасности запрещает SQL-логины |
При проверке подлинности Windows к SQL Server подключается не пользователь 1С, а учётная запись, под которой запущена служба агента сервера (по умолчанию локальный USR1CV8). Если SQL Server стоит на другом компьютере, локальная учётная запись не подойдёт: службу нужно запускать от доменной.
Где потом менять пароль СУБД
Пароль логина 1С в SQL Server можно сменить в любой момент. После этого откройте свойства информационной базы в консоли кластера, впишите новый пароль в поле пользователя сервера БД и сохраните. Пока пароль не обновлён, новые сеансы к базе не откроются.
Смена пароля в SQL Server обрывает подключения рабочих процессов к СУБД при следующем обращении. Делайте это вне рабочего времени.
Пользователи внутри базы 1С
Логин SQL и пользователи 1С — разные вещи. Логин нужен только кластеру. Список пользователей программы ведётся в самой базе: в Конфигураторе или в режиме «Предприятие» в администрировании пользователей. Новую базу сразу закройте паролем администратора 1С.
Перенос данных: загрузка .dt и восстановление .bak
Из файловой базы или другого сервера через .dt
- В исходной базе: Конфигуратор →
Администрирование → Выгрузить информационную базу. Получится файл.dt. - Создайте пустую серверную ИБ по шагам выше (без шаблона конфигурации).
- Откройте её в Конфигураторе →
Администрирование → Загрузить информационную базуи выберите файл. - После загрузки 1С предложит перезапустить Конфигуратор — соглашайтесь.
Загрузка .dt полностью заменяет содержимое целевой базы. Для неё нужен монопольный доступ: все пользователи этой базы должны выйти. Большая база (десятки гигабайт) грузится часами, на это время лучше заранее предупредить людей.
Из резервной копии SQL Server
Вариант для переноса между серверами или восстановления после сбоя, быстрее .dt на больших базах.
- В SQL Server Management Studio восстановите
.bakв новую базу данных:Databases → Restore Database. - Назначьте логину 1С роль
db_ownerв восстановленной базе. - В консоли кластера создайте информационную базу с тем же именем базы данных и без флажка «Создать базу данных в случае ее отсутствия».
- Смещение дат укажите такое же, как на исходном сервере.
То же самое скриптом:
RESTORE DATABASE buh_ooo_romashka
FROM DISK = N'D:\Backup\buh_ooo_romashka.bak'
WITH MOVE N'buh_ooo_romashka' TO N'E:\Data\buh_ooo_romashka.mdf',
MOVE N'buh_ooo_romashka_log' TO N'F:\Log\buh_ooo_romashka_log.ldf',
STATS = 10;
Логические имена файлов в MOVE посмотрите командой RESTORE FILELISTONLY FROM DISK = N'...' — они могут отличаться от имени базы.
Если базу восстанавливают как копию рабочей для тестов, при регистрации в кластере отметьте блокировку регламентных заданий. Иначе копия начнёт сама загружать курсы валют, отправлять отчётность и обмениваться данными с внешними системами.
Как выбрать способ переноса
| Способ | Плюсы | Минусы |
|---|---|---|
.dt | не зависит от СУБД: можно из файловой базы в MS SQL или из MS SQL в PostgreSQL | долго на больших базах, нужен монопольный доступ |
.bak | быстро, сохраняются индексы и статистика | только между серверами одной СУБД, версия SQL Server на приёмнике — не ниже исходной |
Ошибки при подключении базы 1С к SQL
Если ни одна подсказка не подошла
- Подключитесь к SQL Server из Management Studio с того же компьютера, где работает сервер 1С, тем же логином. Если не выходит — проблема в СУБД или сети, а не в 1С.
- Посмотрите технологический журнал сервера 1С или журнал событий Windows на сервере 1С: там видна полная цепочка ошибки СУБД.
- Создайте тестовую ИБ с новым именем базы данных. Если она создаётся, дело в правах или состоянии конкретной базы.
Обслуживание серверной базы после переноса
Перенос — только начало. Без регламентных операций база на SQL через несколько месяцев начинает тормозить, а журнал транзакций занимает весь диск.
Модель восстановления
- 📁 Simple — журнал транзакций очищается сам. Подходит, если хватает ежедневной полной копии.
- 📁 Full — позволяет восстановиться на любой момент времени, но требует регулярного резервного копирования журнала. Без него файл
.ldfрастёт бесконечно.
Модель задаётся в свойствах базы данных в Management Studio, на странице параметров.
План обслуживания
В SQL Server Agent (в редакции Express его нет — используйте планировщик Windows и sqlcmd) настройте задания:
| Операция | Как часто | Зачем |
|---|---|---|
| Полная резервная копия | ежедневно ночью | восстановление после сбоя |
| Копия журнала транзакций | каждый час (только для Full) | восстановление на момент времени, контроль размера .ldf |
| Обновление статистик | ежедневно | планы запросов 1С строятся по актуальным данным |
| Перестроение или реорганизация индексов | раз в неделю | снижает фрагментацию таблиц |
Проверка целостности DBCC CHECKDB | раз в неделю | ранний поиск повреждений |
Обновление статистик по всей базе:
USE buh_ooo_romashka;
EXEC sp_updatestats;
Перестроение индексов на большой базе нагружает диск и блокирует таблицы. Ставьте его на ночь или выходные, когда пользователи не работают.
Что ещё стоит сделать сразу
- 💾 Разнести файлы данных (
.mdf), журнала (.ldf) иtempdbпо разным дискам, если позволяет железо. - 🧠 Проверить ограничение памяти SQL Server: оставьте операционной системе и процессам 1С не меньше 4–8 ГБ.
- 🔒 Проверить, что резервные копии не лежат на том же диске, что и база.
- 📋 Раз в квартал восстанавливать копию на тестовый сервер. Непроверенная копия может оказаться нерабочей в момент, когда она понадобится.