Перенос файловой базы 1С на MS SQL и сервер 1С:Предприятия
Содержание
Чтобы добавить базу 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(для именованного экземпляра ещё UDP1434под службу SQL Server Browser); - на сервере 1С должна быть клиентская библиотека доступа к SQL Server — она ставится вместе с инструментами SQL или отдельным драйвером Microsoft.
Отдельно настраивать ODBC-источник (DSN) не нужно. Платформа подключается к SQL Server по имени сервера, указанному в параметрах базы.
📜 Лицензии. Для клиент-серверного режима нужна лицензия на сервер 1С:Предприятия, плюс клиентские лицензии для пользователей. SQL Server Standard лицензируется отдельно у Microsoft.
Создание базы данных в SQL Server под 1С
Есть два пути. Выбор зависит от того, кто у вас управляет SQL Server.
| Способ | Когда подходит | Что учесть |
|---|---|---|
| 1С создаёт базу сама | Один администратор на 1С и SQL | Логину нужна роль dbcreator |
| Пустая база заранее в SSMS | SQL обслуживает отдельный DBA, права урезаны | Логину достаточно db_owner в этой базе |
Вариант 1. Пусть базу создаст платформа
Ничего в SQL Server Management Studio делать не нужно. При регистрации базы в кластере вы поставите флажок «Создать базу данных в случае её отсутствия» — и платформа создаст её с нужными параметрами.
Вариант 2. Пустая база вручную
- Откройте SQL Server Management Studio, подключитесь к экземпляру.
- В обозревателе объектов щёлкните правой кнопкой по
Databases → New Database. - Задайте имя, например
buh_2026. Имя пишите латиницей, без пробелов и дефисов — так меньше проблем со скриптами обслуживания. - На странице
Optionsвыберите сортировкуCyrillic_General_CI_ASи модель восстановления. - В разделе безопасности базы сопоставьте логину
user1cпользователя с рольюdb_owner.
Модель восстановления выбирают под регламент копирования:
Simple— если делаете полный бэкап раз в сутки и потеря дня работы допустима;Full— если нужны бэкапы журнала транзакций и восстановление на момент времени. Без регулярного копирования журнала файл.ldfв модели Full растёт до заполнения диска.
Пустую базу не наполняйте таблицами: структуру создаст 1С при загрузке .dt.
Выгрузка файловой базы 1С в файл .dt
Выгрузка — это и есть «утилита конвертации». Отдельные программы для перевода файловой базы в SQL не нужны.
- Попросите всех пользователей выйти из файловой базы. Выгрузка требует монопольного доступа.
- Запустите базу в режиме
Конфигуратор. - Выберите
Администрирование → Выгрузить информационную базу. - Укажите путь к файлу, например
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С
- В списке баз нажмите
Добавить. - Выберите «Создание новой информационной базы» → «Создание информационной базы без конфигурации». Конфигурация придёт вместе с
.dt. - Укажите имя для списка и тип расположения «На сервере 1С:Предприятия».
- Заполните параметры.
| Поле | Что вписать |
|---|---|
| Кластер серверов 1С:Предприятия | Имя сервера 1С, например srv1c (при нестандартном порте — srv1c:2541) |
| Имя информационной базы в кластере | Короткое латинское имя, например buh |
| Тип СУБД | MS SQL Server |
| Сервер баз данных | srvsql или srvsql\SQLEXPRESS для именованного экземпляра |
| Имя базы данных | buh_2026 |
| Пользователь сервера БД / Пароль | user1c и его пароль |
| Смещение дат | 2000 |
| Создать базу данных в случае её отсутствия | Флажок, если база не создана заранее |
| Установить блокировку регламентных заданий | Флажок на время переноса |
- Нажмите
ДалееиГотово. Платформа зарегистрирует базу в кластере и подключится к SQL Server.
Флажок блокировки регламентных заданий нужен, чтобы новая база не начала сама загружать курсы валют, классификаторы и обмены, пока вы проверяете данные. Снимете его после проверки.
Через консоль администрирования серверов
- Откройте
Администрирование серверов 1С Предприятия. - Раскройте
Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → Локальный кластер. - Правой кнопкой по
Информационные базы → Создать → Информационная база. - Заполните те же поля, что в таблице выше.
После этого базу ещё нужно добавить в список у пользователей: Добавить → Добавление в список существующей информационной базы → На сервере 1С:Предприятия, указать кластер и имя базы в кластере. В строке подключения это выглядит так: Srvr="srv1c";Ref="buh";.
Загрузка данных и первый запуск серверной базы
- Откройте новую серверную базу
в режиме
Конфигуратор. Она пустая, пароль не спросит. - Выберите
Администрирование → Загрузить информационную базу. - Укажите файл
buh.dt. Платформа предупредит, что текущие данные будут заменены, — подтвердите. - После загрузки Конфигуратор предложит перезапуститься. Согласитесь.
Тот же шаг из командной строки:
"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?
Можно ли подключить файл базы SQL напрямую, без сервера 1С?
Держать SQL Server и сервер 1С на одной машине или на разных?
Подойдёт ли PostgreSQL вместо MS SQL?
.dt, регистрация базы с типом СУБД PostgreSQL, загрузка. Отличаются только установка и настройка самой СУБД.