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

· 10 мин

Содержание

Чтобы добавить базу 1С в SQL Server, выгрузите файловую базу в файл .dt (Конфигуратор → Администрирование → Выгрузить информационную базу), создайте новую информационную базу на сервере 1С:Предприятия с типом СУБД MS SQL Server и загрузите в неё этот файл (Администрирование → Загрузить информационную базу). Напрямую «подложить» файл 1Cv8.1CD в SQL нельзя: данные переезжают только через выгрузку и загрузку.

Схема работает, если у вас уже стоят две вещи: сервер 1С:Предприятия 8.3 (служба агента сервера) и экземпляр Microsoft SQL Server, к которому этот сервер может подключиться. Сама 1С в SQL Server не «заходит»: с СУБД общается рабочий процесс кластера, а пользователи подключаются к кластеру. Отсюда и порядок действий ниже.

Что подготовить до переноса: сервер 1С, SQL Server и права

Сначала соберите инфраструктуру. Без любого из пунктов ниже загрузка остановится на середине.

🖥 Сервер 1С:Предприятия. Версия платформы сервера должна совпадать с версией клиента, которым вы будете подключаться. Служба агента сервера должна быть запущена, кластер — создан (при установке он создаётся автоматически на портах 1541 и 1560:1591).

🗄 Microsoft SQL Server. Подойдёт и бесплатный Express для небольшой базы, но у него ограничение 10 ГБ на одну базу данных и урезанное использование памяти. Для рабочей базы бухгалтерии на 5–15 пользователей берут Standard.

🔑 Логин в SQL Server. Удобнее всего проверка подлинности SQL Server. Значит, при установке нужно включить смешанный режим (Mixed Mode), а потом завести логин, например user1c. Права:

  • роль сервера dbcreator, если базу данных будет создавать сама 1С;
  • роль db_owner в конкретной базе, если вы создаёте её заранее вручную.

Пользоваться sa для 1С можно, но это лишний риск: пароль от логина хранится в параметрах информационной базы в кластере.

🌐 Сеть. Если SQL Server и сервер 1С стоят на разных машинах:

  • включите протокол TCP/IP в SQL Server Configuration Manager и перезапустите службу SQL;
  • откройте в брандмауэре порт 1433 (для именованного экземпляра ещё UDP 1434 под службу SQL Server Browser);
  • на сервере 1С должна быть клиентская библиотека доступа к SQL Server — она ставится вместе с инструментами SQL или отдельным драйвером Microsoft.

Отдельно настраивать ODBC-источник (DSN) не нужно. Платформа подключается к SQL Server по имени сервера, указанному в параметрах базы.

📜 Лицензии. Для клиент-серверного режима нужна лицензия на сервер 1С:Предприятия, плюс клиентские лицензии для пользователей. SQL Server Standard лицензируется отдельно у Microsoft.

Готово к переносу?
Выполнено: 0 / 5

Создание базы данных в SQL Server под 1С

Есть два пути. Выбор зависит от того, кто у вас управляет SQL Server.

СпособКогда подходитЧто учесть
1С создаёт базу самаОдин администратор на 1С и SQLЛогину нужна роль dbcreator
Пустая база заранее в SSMSSQL обслуживает отдельный DBA, права урезаныЛогину достаточно db_owner в этой базе

Вариант 1. Пусть базу создаст платформа

Ничего в SQL Server Management Studio делать не нужно. При регистрации базы в кластере вы поставите флажок «Создать базу данных в случае её отсутствия» — и платформа создаст её с нужными параметрами.

Вариант 2. Пустая база вручную

  1. Откройте SQL Server Management Studio, подключитесь к экземпляру.
  2. В обозревателе объектов щёлкните правой кнопкой по Databases → New Database.
  3. Задайте имя, например buh_2026. Имя пишите латиницей, без пробелов и дефисов — так меньше проблем со скриптами обслуживания.
  4. На странице Options выберите сортировку Cyrillic_General_CI_AS и модель восстановления.
  5. В разделе безопасности базы сопоставьте логину user1c пользователя с ролью db_owner.

Модель восстановления выбирают под регламент копирования:

  • Simple — если делаете полный бэкап раз в сутки и потеря дня работы допустима;
  • Full — если нужны бэкапы журнала транзакций и восстановление на момент времени. Без регулярного копирования журнала файл .ldf в модели Full растёт до заполнения диска.

Пустую базу не наполняйте таблицами: структуру создаст 1С при загрузке .dt.

Выгрузка файловой базы 1С в файл .dt

Выгрузка — это и есть «утилита конвертации». Отдельные программы для перевода файловой базы в SQL не нужны.

  1. Попросите всех пользователей выйти из файловой базы. Выгрузка требует монопольного доступа.
  2. Запустите базу в режиме Конфигуратор.
  3. Выберите Администрирование → Выгрузить информационную базу.
  4. Укажите путь к файлу, например D:\Backup\buh.dt, и дождитесь сообщения о завершении.

Для базы в 3–5 ГБ выгрузка обычно занимает от нескольких минут до получаса, всё зависит от диска.

То же самое делается из командной строки — удобно, если перенос запланирован на ночь:

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DumpIB "D:\Backup\buh.dt" /Out "D:\Backup\dump.log"

Номер версии в пути замените на свой. Лог в /Out покажет, чем закончилась операция.

Перед выгрузкой запустите Администрирование → Тестирование и исправление с проверкой логической целостности. Битые ссылки в файловой базе потом всплывут ошибками уже на SQL, и разбираться с ними там дольше.

Файловую базу после выгрузки не удаляйте. Она остаётся запасным вариантом, пока серверная не проверена.

Регистрация базы в кластере серверов 1С и связь с SQL

Базу регистрируют либо через окно запуска 1С, либо через консоль администрирования серверов. Результат одинаковый.

Через окно запуска 1С

  1. В списке баз нажмите Добавить.
  2. Выберите «Создание новой информационной базы» → «Создание информационной базы без конфигурации». Конфигурация придёт вместе с .dt.
  3. Укажите имя для списка и тип расположения «На сервере 1С:Предприятия».
  4. Заполните параметры.
ПолеЧто вписать
Кластер серверов 1С:ПредприятияИмя сервера 1С, например srv1c (при нестандартном порте — srv1c:2541)
Имя информационной базы в кластереКороткое латинское имя, например buh
Тип СУБДMS SQL Server
Сервер баз данныхsrvsql или srvsql\SQLEXPRESS для именованного экземпляра
Имя базы данныхbuh_2026
Пользователь сервера БД / Парольuser1c и его пароль
Смещение дат2000
Создать базу данных в случае её отсутствияФлажок, если база не создана заранее
Установить блокировку регламентных заданийФлажок на время переноса
  1. Нажмите Далее и Готово. Платформа зарегистрирует базу в кластере и подключится к SQL Server.

Флажок блокировки регламентных заданий нужен, чтобы новая база не начала сама загружать курсы валют, классификаторы и обмены, пока вы проверяете данные. Снимете его после проверки.

Через консоль администрирования серверов

  1. Откройте Администрирование серверов 1С Предприятия.
  2. Раскройте Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → Локальный кластер.
  3. Правой кнопкой по Информационные базы → Создать → Информационная база.
  4. Заполните те же поля, что в таблице выше.

После этого базу ещё нужно добавить в список у пользователей: Добавить → Добавление в список существующей информационной базы → На сервере 1С:Предприятия, указать кластер и имя базы в кластере. В строке подключения это выглядит так: Srvr="srv1c";Ref="buh";.

Загрузка данных и первый запуск серверной базы

  1. Откройте новую серверную базу в режиме Конфигуратор. Она пустая, пароль не спросит.
  2. Выберите Администрирование → Загрузить информационную базу.
  3. Укажите файл buh.dt. Платформа предупредит, что текущие данные будут заменены, — подтвердите.
  4. После загрузки Конфигуратор предложит перезапуститься. Согласитесь.

Тот же шаг из командной строки:

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /S "srv1c\buh" /N "Администратор" /P "пароль" /RestoreIB "D:\Backup\buh.dt" /Out "D:\Backup\restore.log"

Проверка после загрузки — коротко, но обязательно:

  • ✅ войдите в режиме 1С:Предприятие под администратором и под обычным пользователем;
  • ✅ сформируйте оборотно-сальдовую ведомость за последний закрытый период в обеих базах и сравните итоги;
  • ✅ проведите тестовый документ и удалите его;
  • ✅ снимите блокировку регламентных заданий в свойствах базы в консоли кластера.

Когда всё сошлось, уберите старую файловую базу из списка у пользователей. Иначе кто-нибудь продолжит работать в ней по привычке, и данные разойдутся.

Настройка SQL Server и кластера для быстрой работы 1С

После переезда база на SQL часто работает медленнее, чем ожидали. Почти всегда причина в настройках по умолчанию.

Параметры SQL Server

  • 🧠 Max server memory. По умолчанию SQL Server забирает всю свободную память. Если 1С и SQL на одной машине, рабочие процессы rphost начинают голодать. Ограничьте SQL так, чтобы операционной системе и 1С осталось 4–8 ГБ. Пример: на сервере с 32 ГБ поставьте SQL около 24 ГБ.
  • ⚙️ Max degree of parallelism = 1. Запросы 1С короткие и многочисленные, параллелизм в них чаще вредит, чем помогает. Это распространённая практика для серверов под 1С.
  • 💾 tempdb. Вынесите на быстрый SSD, сделайте несколько файлов данных одинакового размера (обычно по числу ядер, но не больше 8).
  • 📏 Автоприрост файлов. Замените прирост в процентах на фиксированный, например 512 МБ для данных и 256 МБ для журнала.
  • 🚫 Auto Shrink и Auto Close — выключены.

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

Создайте в SQL Server Management Studio план обслуживания (Management → Maintenance Plans):

  • ежедневно — обновление статистики;
  • раз в неделю — перестроение или реорганизация индексов и очистка процедурного кэша;
  • ежедневно — полный бэкап, а в модели Full ещё и бэкапы журнала каждые 15–60 минут.

Перестроение индексов на большой базе грузит диск и может блокировать таблицы. Ставьте его на ночь или выходные, когда в 1С никто не работает.

Сервер 1С

  • Если SQL и 1С на одной машине, по умолчанию используется протокол Shared Memory — он быстрее TCP. Не отключайте его.
  • Схема электропитания Windows на обоих серверах — «Высокая производительность». С экономичной схемой процессор сбрасывает частоту, а 1С чувствительна к частоте ядра.
  • Для рабочих баз оставьте в свойствах базы флажок «Разрешить выдачу лицензий сервером 1С:Предприятия». Тогда клиенты получают лицензию с сервера, и не нужно активировать лицензии на каждом компьютере.

Ошибки при подключении базы 1С к SQL Server

Ошибки при переносе делятся на две группы: клиент не достучался до кластера или кластер не достучался до SQL. Текст ошибки подсказывает, на каком участке обрыв.

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

Ещё одна ситуация — загрузка .dt обрывается на середине с ошибкой СУБД о нехватке места. Обычно кончилось место под журнал транзакций: во время загрузки он растёт сильно. Освободите диск или временно переключите базу в модель Simple, а после загрузки верните нужную модель и сделайте полный бэкап.

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

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

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