Перевод базы 1С из файлового режима на MS SQL Server: сервер, права, перенос данных и настройка
Содержание
Подключить 1С к SQL Server напрямую нельзя: между клиентом и СУБД всегда стоит сервер 1С:Предприятия. Схема такая: на сервер ставите MS SQL Server и сервер 1С, в консоли кластера создаёте информационную базу с типом СУБД MSSQLServer, затем выгружаете файловую базу
в .dt и загружаете её в новую. Сама смена режима работы занимает час-два, большую часть времени съедает подготовка.
Инструкция общая для платформы 8.3 и любой типовой конфигурации: БП 3.0, ЗУП 3.1, УТ 11 и других. Конфигурация на перенос не влияет, путь в Конфигураторе везде одинаковый.
Что подготовить до перехода на SQL Server
Клиент-серверный режим — это три компонента и одна лицензия. Без любого из них база не запустится.
| Компонент | Что нужно | Комментарий |
|---|---|---|
| 🖥 Сервер 1С:Предприятия | Та же версия платформы, что у клиентов, 64-разрядная | Номер версии сервера и клиента должен совпадать полностью |
| 🗄 MS SQL Server | Standard или Express | Express ограничивает базу 10 ГБ и использует мало памяти |
| 🔑 Лицензия сервера 1С | Отдельная от клиентских | Без неё сервер не отдаст сеанс клиенту |
| 💾 Свободное место | В 2–3 раза больше файла 1Cv8.1CD | Под файлы базы, журнал транзакций и бэкапы |
Сервер 1С и SQL Server можно держать на одной машине. Для 10–30 пользователей так и делают: меньше сетевых задержек, проще администрировать. Разносить по разным серверам имеет смысл, когда памяти одного не хватает обоим.
💡 Ориентир по памяти для базы на 20 пользователей: от 16 ГБ RAM на совмещённом сервере. Из них SQL Server получает примерно половину, остальное — рабочие процессы 1С и система.
Установка MS SQL Server
При установке SQL Server три настройки менять потом дорого:
- Компонент. Достаточно «Службы ядра СУБД» (Database Engine Services). Службы аналитики и отчётов 1С не нужны.
- Параметры сортировки (collation). Выберите
Cyrillic_General_CI_AS. Если у экземпляра будет другая сортировка, кириллица в запросах к временным таблицам может сравниваться неправильно. - Режим проверки подлинности. Включите смешанный режим (SQL Server и Windows). 1С чаще всего подключается к СУБД под SQL-логином, и в режиме «только Windows» такой логин не войдёт.
Затем поставьте SQL Server Management Studio (SSMS) — она устанавливается отдельно и нужна для логинов, бэкапов и обслуживания.
Установка сервера 1С
В установщике платформы отметьте компонент «Сервер 1С:Предприятия» и «Администрирование сервера 1С:Предприятия». Установите сервер как службу Windows: установщик предложит создать пользователя
USR1CV8 или указать существующего.
После установки зарегистрируйте консоль администрирования. Запустите от имени администратора утилиту регистрации из меню «Пуск» (ярлык «Регистрация утилиты администрирования серверов») — она регистрирует radmin.dll нужной версии. Без этого консоль кластера не откроется или откроется с ошибкой.
Логин и права для 1С в SQL Server
Сервер 1С ходит в СУБД под одним логином. Его нужно создать заранее в SSMS.
- Откройте SSMS, подключитесь к экземпляру.
- Раскройте
Безопасность → Имена входа, в контекстном меню выберите «Создать имя входа». - Выберите «Проверка подлинности SQL Server», задайте имя (например,
user1c) и пароль. - Снимите флажок «Пользователь должен сменить пароль при следующем входе».
- На странице «Роли сервера» отметьте
dbcreator, если базы будет создавать сам сервер 1С.
После создания базы откройте Сопоставление пользователей для этого логина и выдайте в новой базе роль db_owner. С ролями dbcreator и db_owner 1С может создавать базу и менять её структуру при обновлении конфигурации.
Не подключайте 1С под логином sa. Это работает, но пароль sa оказывается в свойствах каждой базы в консоли кластера, и любой администратор 1С получает полный доступ ко всем базам SQL Server.
Что ещё проверить по правам:
- 🔐 учётная запись службы сервера 1С (
USR1CV8или ваша) имеет право «Вход в качестве службы»; - 📁 у неё есть полный доступ к каталогу данных кластера (по умолчанию
C:\Program Files\1cv8\srvinfo); - 🧾 если используете вход через Windows вместо SQL-логина, логин в SQL Server создаётся именно для учётной записи службы 1С, а не для пользователя, который работает в базе.
Создание базы в кластере серверов 1С
Базу удобнее создавать в консоли администрирования: там видны все поля сразу.
- Откройте «Администрирование серверов 1С Предприятия».
- Раскройте
Центральные серверы 1С:Предприятия → имя сервера → Кластеры → Локальный кластер → Информационные базы. - В контекстном меню узла «Информационные базы» выберите
Создать → Информационная база. - Заполните поля по таблице ниже и нажмите «ОК».
| Поле | Что указать |
|---|---|
| Имя | Имя базы в кластере, латиницей без пробелов, например buh_ooo |
| Защищённое соединение | Выключено |
| Сервер баз данных | Имя сервера SQL; для именованного экземпляра SERVER\SQLEXPRESS |
| Тип СУБД | MSSQLServer |
| База данных | Имя базы в SQL Server, можно такое же, как в кластере |
| Пользователь сервера БД / Пароль | Логин user1c и его пароль |
| Смещение дат | Оставьте предложенное значение и не меняйте его позже |
| Создать базу данных в случае её отсутствия | Включено |
| Установить блокировку регламентных заданий | Включено на время переноса |
Флажок «Установить блокировку регламентных заданий» не забудьте снять после проверки базы — иначе не будут работать обмены, загрузка курсов и прочие задания по расписанию.
Если база в SQL Server уже создана вручную, флажок «Создать базу данных …» ставить не нужно — 1С подключится к существующей пустой базе.
Подключение базы у пользователей
В окне запуска 1С нажмите «Добавить» → «Добавление в список существующей информационной базы». На следующем шаге выберите «На сервере 1С:Предприятия» и заполните:
- Кластер серверов
1С:Предприятия — имя сервера, где работает служба 1С (если порт агента изменён, то
SERVER:порт); - Имя информационной базы в кластере — то же имя, что в консоли (
buh_ooo).
Имя SQL-базы и логин СУБД пользователю знать не нужно, их хранит кластер.
Перенос файловой базы на SQL Server через .dt
Прямого конвертера из файлового формата в SQL нет. Работает выгрузка и загрузка информационной базы — этот способ переносит данные, конфигурацию, пользователей и их права.
Шаг 1. Освободите базу. Попросите пользователей выйти. Выгрузке нужен монопольный доступ, при открытых сеансах Конфигуратор её не начнёт.
Шаг 2. Проверьте базу (по желанию, но полезно). В Конфигураторе: Администрирование → Тестирование и исправление. Запустите сначала только проверку логической целостности, без исправления. Ошибки в файловой базе после загрузки в SQL никуда не денутся.
Шаг 3. Выгрузите базу. В Конфигураторе файловой базы: Администрирование → Выгрузить информационную базу. Сохраните файл .dt на локальный диск сервера, а не на сетевую папку — так быстрее.
Шаг 4. Загрузите в новую базу. Откройте Конфигуратор серверной базы, созданной в предыдущем разделе: Администрирование → Загрузить информационную базу, укажите .dt. Перед загрузкой платформа предупредит, что текущие данные будут заменены, — для пустой базы это нормально.
Шаг 5. Проверьте результат. Запустите базу в режиме 1С:Предприятие, откройте пару отчётов за прошлый период и сравните итоги с файловой базой. Хороший ориентир — оборотно-сальдовая ведомость за год: суммы должны совпасть до копейки.
Шаг 6. Уберите старую базу из списка. Файловую базу не удаляйте ещё 2–4 недели, но переименуйте её в списке баз или уберите из него у пользователей, чтобы никто случайно не продолжил работать в старой копии.
💡 Для базы 5–10 ГБ выгрузка и загрузка вместе занимают от 30 минут до пары часов. Планируйте перенос на вечер или выходной.
Если база очень большая
На базах в десятки гигабайт .dt грузится долго, а при нехватке памяти выгрузка может обрываться. В этом случае помогает пакетная выгрузка и загрузка из командной строки, без открытия Конфигуратора вручную:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DumpIB "D:\Backup\buh.dt" /Out "D:\Backup\dump.log"
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /S "SERVER\buh_ooo" /N "Администратор" /P "пароль" /RestoreIB "D:\Backup\buh.dt" /Out "D:\Backup\restore.log"
Номер версии в пути замените на свой. Результат и ошибки пишутся в файл из параметра /Out — его стоит прочитать даже при успешном завершении.
Настройка SQL Server под 1С после переноса
База в SQL Server без обслуживания со временем начинает тормозить. Сделайте пять настроек сразу после переноса.
1. Ограничьте память SQL Server. По умолчанию SQL Server забирает почти всю RAM и вытесняет рабочие процессы 1С. В SSMS: свойства сервера → «Память» → «Максимальный объём памяти сервера». На совмещённом сервере с 32 ГБ оставьте SQL примерно 16–20 ГБ.
2. Выставьте MAXDOP = 1. Свойства сервера → «Дополнительно» → «Максимальная степень параллелизма» = 1. Запросы 1С короткие и многочисленные, параллельные планы в них чаще мешают, чем помогают. Это давняя рекомендация для серверов под 1С.
3. Выберите модель восстановления. У новой базы по умолчанию модель «Полная», и журнал транзакций растёт, пока его не бэкапить. Варианты:
| Модель | Когда подходит | Что нужно делать |
|---|---|---|
| Простая (Simple) | Достаточно ежедневной полной копии | Только полные бэкапы, журнал не растёт |
| Полная (Full) | Нужно восстановление на момент времени | Полные бэкапы + бэкапы журнала каждые 15–60 минут |
Для небольшой организации обычно хватает простой модели с ночным полным бэкапом.
4. Настройте план обслуживания. В SSMS через «Управление → Планы обслуживания» соберите задание:
- 🔄 ежедневно — обновление статистики;
- 🧹 после обновления статистики — очистка процедурного кэша (
DBCC FREEPROCCACHE), чтобы SQL построил планы по свежей статистике; - 🧱 раз в неделю — реорганизация или перестроение индексов;
- 💾 ежедневно — полный бэкап с проверкой.
Ставьте задания на ночь: перестроение индексов нагружает диск и блокирует таблицы.
5. Разнесите файлы. Если дисков несколько, держите файл данных, журнал транзакций и tempdb на разных томах, а лучше на SSD. Для tempdb создайте несколько файлов данных одинакового размера (по числу ядер, но не больше восьми).
Добавьте в исключения антивируса каталоги файлов SQL Server и каталог srvinfo сервера 1С. Проверка этих файлов «на лету» снижает скорость в разы.
💡 Включите в Windows схему электропитания «Высокая производительность». На серверах со схемой «Сбалансированная» процессор сбрасывает частоту, и 1С ощутимо замедляется.
Типовые ошибки подключения 1С к SQL Server
Большинство проблем после смены режима работы — сетевые или с правами. Найдите свой симптом:
Если ошибка появляется не сразу, а через несколько часов работы, смотрите на память сервера. Чаще всего это SQL Server без ограничения памяти: он забирает всё, рабочим процессам 1С не хватает, и они перезапускаются с обрывом сеансов.
Частые ошибки при смене режима работы
- ❌ Версия сервера 1С не совпадает с версией клиентов. Даже отличие в последних цифрах сборки блокирует вход. Обновляйте сервер и клиенты одновременно.
- ❌ Не снята блокировка регламентных заданий. Через неделю выясняется, что курсы валют не загружались, а обмен с сайтом стоит.
- ❌ Модель восстановления «Полная» без бэкапов журнала. Журнал транзакций разрастается до размера диска, и база встаёт с ошибкой записи.
- ❌ Пользователи продолжают работать в файловой базе. Через пару дней данные расходятся, и их приходится сводить руками.
- ❌ SQL Server Express на растущей базе. При достижении 10 ГБ база перестаёт принимать данные. Если файл
1Cv8.1CDуже 6–7 ГБ, сразу берите Standard или рассмотрите PostgreSQL — 1С поддерживает его как СУБД для клиент-серверного режима.
Частые вопросы
Можно ли вернуть базу обратно в файловый режим?
.dt, создайте новую пустую файловую базу и загрузите в неё файл. Данные и пользователи перенесутся так же.