Перенос 1С на MS SQL: от установки драйвера до первой информационной базы в кластере

· 11 мин

Содержание

Базу 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

  1. При установке SQL Server выберите смешанный режим проверки подлинности (SQL Server и Windows). 1С чаще всего подключается SQL-логином, а не учётной записью Windows.
  2. Задайте параметры сортировки сервера Cyrillic_General_CI_AS. С ней 1С работает без сюрпризов при сравнении и сортировке строк.
  3. Создайте логин для 1С. Для создания новых баз ему нужна серверная роль dbcreator, для работы с уже существующей базой — роль db_owner в этой базе. Под sa работать можно, но лучше не давать 1С больше прав, чем нужно.
  4. Ограничьте память 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.

Добавление центрального сервера

  1. Откройте консоль, встаньте на узел «Central 1C:Enterprise 8.3 servers».
  2. Правой кнопкой → Создать → Центральный сервер 1С:Предприятия 8.3.
  3. Укажите имя компьютера, где запущен агент сервера, протокол tcp и IP-порт 1540.
  4. Раскройте сервер: внутри должен появиться кластер, обычно «Локальный кластер» с портом 1541.

Если кластера нет, а служба агента работает, проверьте, что служба запущена от пользователя с правами на свой каталог данных (по умолчанию srvinfo). Кластер создаётся при первом старте службы с ключом -regport.

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

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

Создание информационной базы на сервере SQL через консоль

  1. Раскройте кластер, правой кнопкой по узлу «Информационные базы» → Создать → Информационная база.
  2. Заполните поля формы по таблице ниже.
  3. Нажмите «ОК». Кластер создаст базу данных в СУБД и зарегистрирует информационную базу.
ПолеЧто указать
Имяимя ИБ в кластере, латиницей без пробелов: 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. Добавить → «Создание новой информационной базы».
  2. Выберите пустую базу или шаблон конфигурации.
  3. Тип расположения — «На сервере 1С:Предприятия».
  4. Заполните кластер серверов (имя сервера 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

  1. В исходной базе: Конфигуратор → Администрирование → Выгрузить информационную базу. Получится файл .dt.
  2. Создайте пустую серверную ИБ по шагам выше (без шаблона конфигурации).
  3. Откройте её в Конфигураторе → Администрирование → Загрузить информационную базу и выберите файл.
  4. После загрузки 1С предложит перезапустить Конфигуратор — соглашайтесь.

Загрузка .dt полностью заменяет содержимое целевой базы. Для неё нужен монопольный доступ: все пользователи этой базы должны выйти. Большая база (десятки гигабайт) грузится часами, на это время лучше заранее предупредить людей.

Из резервной копии SQL Server

Вариант для переноса между серверами или восстановления после сбоя, быстрее .dt на больших базах.

  1. В SQL Server Management Studio восстановите .bak в новую базу данных: Databases → Restore Database.
  2. Назначьте логину 1С роль db_owner в восстановленной базе.
  3. В консоли кластера создайте информационную базу с тем же именем базы данных и без флажка «Создать базу данных в случае ее отсутствия».
  4. Смещение дат укажите такое же, как на исходном сервере.

То же самое скриптом:

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

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

Если ни одна подсказка не подошла

  1. Подключитесь к SQL Server из Management Studio с того же компьютера, где работает сервер 1С, тем же логином. Если не выходит — проблема в СУБД или сети, а не в 1С.
  2. Посмотрите технологический журнал сервера 1С или журнал событий Windows на сервере 1С: там видна полная цепочка ошибки СУБД.
  3. Создайте тестовую ИБ с новым именем базы данных. Если она создаётся, дело в правах или состоянии конкретной базы.

Обслуживание серверной базы после переноса

Перенос — только начало. Без регламентных операций база на 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 ГБ.
  • 🔒 Проверить, что резервные копии не лежат на том же диске, что и база.
  • 📋 Раз в квартал восстанавливать копию на тестовый сервер. Непроверенная копия может оказаться нерабочей в момент, когда она понадобится.
Можно ли перенести базу 1С на SQL без сервера 1С:Предприятия?
Нет. Клиент 1С не работает с СУБД напрямую, вся работа с SQL идёт через кластер серверов 1С. Кроме платформы нужна лицензия на сервер 1С.
Подойдёт ли бесплатный SQL Server Express?
Технически базу создать можно, но у Express ограничен размер одной базы (10 ГБ) и используемая память. Для небольшой базы на несколько пользователей этого хватает, для рабочей базы предприятия обычно нет.
Сколько баз 1С можно держать на одном SQL Server?
Ограничения со стороны 1С нет. Каждая информационная база — отдельная база данных в СУБД. Реальный предел задают память, диски и нагрузка.
Можно ли переименовать информационную базу в кластере?
Имя ИБ в кластере меняют в её свойствах в консоли. После этого у всех пользователей нужно поправить строку подключения в списке баз, иначе они получат ошибку «база не обнаружена».
Нужна ли лицензия MS SQL Server для работы с 1С?
Да, для коммерческих редакций SQL Server нужны лицензии Microsoft по их правилам. Бесплатные варианты — SQL Server Express с его ограничениями или PostgreSQL.