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

· 10 мин

Содержание

Чтобы обновить 1С на SQL Server, сделайте полную копию базы средствами SQL (BACKUP DATABASE), заблокируйте вход пользователей, остановите службу агента сервера 1С, установите новую версию платформы и перерегистрируйте службу на новый ragent.exe. Затем обновите клиентов до той же сборки и только после этого обновляйте конфигурацию через Конфигуратор.

Самая частая беда — обновили сервер, а клиенты остались на старой сборке, или накатили релиз конфигурации без копии и упёрлись в ошибку реструктуризации. Ниже порядок, при котором любой шаг можно откатить за 15–30 минут.

1. Подготовка к обновлению 1С на SQL Server: копия и окно работ

Обновление начинают не с дистрибутива, а с плана отката. Нужны три вещи: копия базы, копия настроек кластера и время, когда в базе никого нет.

Резервная копия базы в SQL Server

Копию делайте средствами СУБД, а не только выгрузкой .dt. Для базы на 100+ ГБ выгрузка .dt идёт часами, а BACKUP DATABASE — минуты.

BACKUP DATABASE [buh_prod]
TO DISK = N'D:\Backup\buh_prod_before_update.bak'
WITH COPY_ONLY, CHECKSUM, COMPRESSION, STATS = 10;

RESTORE VERIFYONLY
FROM DISK = N'D:\Backup\buh_prod_before_update.bak'
WITH CHECKSUM;
  • 💾 COPY_ONLY не ломает цепочку ваших регулярных бэкапов: разностные копии по расписанию продолжат работать.
  • ✅ RESTORE VERIFYONLY проверяет, что файл читается. Непроверенная копия — не копия.
  • 📦 COMPRESSION поддерживается не во всех редакциях SQL Server. Если команда ругается — уберите параметр.

Выгрузка .dt через Конфигуратор → Администрирование → Выгрузить информационную базу полезна как второй слой: её можно загрузить на другой сервер или в файловый вариант для проверки. Но основной откат — из .bak.

Копия настроек кластера

Список баз, рабочих серверов и администраторов кластера хранится в каталоге srvinfo. Скопируйте папку reg_1541 целиком (внутри лежит файл 1CV8Clst.lst). Путь по умолчанию — C:\Program Files\1cv8\srvinfo, но точный путь виден в параметре -d службы (см. раздел 3).

Блокировка сеансов

В консоли администрирования серверов 1С откройте свойства информационной базы и включите:

  1. Блокировка начала сеансов включена — задайте сообщение и код разрешения, например upd2026.
  2. Блокировка регламентных заданий включена — иначе обмены и загрузки курсов будут лезть в базу во время работ.
  3. Завершите текущие сеансы в узле «Сеансы».

Перед завершением сеансов предупредите пользователей: несохранённые документы пропадут. Работы планируйте на вечер или выходные. Сами вы входите в заблокированную базу с параметром запуска /UC upd2026.

Перед обновлением
Выполнено: 0 / 6

2. Совместимость версий платформы 1С и MS SQL Server

Каждая версия платформы 8.3 работает с ограниченным списком версий SQL Server. Новый релиз платформы может перестать поддерживать старый SQL Server, а свежий SQL Server — не поддерживаться старой платформой. Список актуальных пар публикуется в системных требованиях платформы на сайте фирмы 1С и в файле readme дистрибутива.

Что проверить до установки:

Что сверяемКак узнатьНа что смотреть
Версия SQL ServerSELECT @@VERSION;Есть ли она в требованиях новой платформы
Уровень совместимости базызапрос нижеНе ниже, чем требует платформа
Текущая сборка платформыСправка → О программе или имя папки в C:\Program Files\1cv8Номер, на который откатываться
Требование конфигурациифайл ReadMe или описание релиза конфигурацииМинимальная версия платформы для релиза
SELECT name, compatibility_level, recovery_model_desc
FROM sys.databases
WHERE name = N'buh_prod';

Версии сравнивайте по номеру сборки однозначно: если релиз конфигурации требует платформу «не ниже 8.3.24.1691», то сборка 8.3.24.1586 не подойдёт, даже если она установлена недавно.

Новый релиз типовой конфигурации часто требует новую платформу. Поэтому порядок жёсткий: сначала платформа на сервере и клиентах, потом конфигурация. Наоборот — Конфигуратор откажется обновлять базу.

Ещё один момент — драйвер доступа к SQL Server на сервере 1С. Рабочие процессы подключаются к СУБД через клиентский компонент Microsoft. Если сервер 1С и SQL стоят на разных машинах, после смены платформы проверьте, что нужный драйвер установлен на сервере 1С: ошибка подключения к СУБД после обновления часто сводится именно к этому.

3. Обновление сервера 1С: установка платформы и служба агента

На сервере платформы разных сборок ставятся рядом, каждая в свою папку: C:\Program Files\1cv8\8.3.xx.xxxx. Старую версию не удаляйте до конца работ — это и есть быстрый откат.

Шаг 1. Запомните параметры текущей службы

sc query type= service state= all | findstr /i "1C"
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"

Если имя службы у вас другое — возьмите его из вывода первой команды. В строке BINARY_PATH_NAME видна полная командная строка агента: путь к ragent.exe, порты -port 1540, -regport 1541, диапазон -range 1560:1591 и каталог -d. Сохраните её в блокнот целиком.

Шаг 2. Остановите службу

net stop "1C:Enterprise 8.3 Server Agent (x86-64)"

Остановка агента обрывает все сеансы на всех базах этого кластера, а не только на обновляемой. Если на сервере живут базы других отделов — согласуйте окно со всеми.

Шаг 3. Установите новую версию

Запустите setup.exe из дистрибутива сервера (для 64-разрядного сервера — 64-разрядный дистрибутив). В списке компонентов отметьте:

  • 🖥️ «Сервер 1С:Предприятия»;
  • 🛠️ «Администрирование сервера 1С:Предприятия» — без него консоль новой версии не заработает;
  • 💻 клиентские компоненты, если на сервере запускаете Конфигуратор.

Галку «Установить 1С:Предприятие как сервис Windows » оставьте, если хотите, чтобы установщик сам переписал службу. На практике надёжнее после установки проверить её вручную.

Шаг 4. Направьте службу на новый ragent.exe

Снова выполните sc qc и посмотрите путь. Если в нём осталась старая версия — перерегистрируйте службу. Удалите старую регистрацию из папки старой версии:

"C:\Program Files\1cv8\8.3.24.1586\bin\ragent.exe" -rmsrvc

И зарегистрируйте новую с теми же параметрами, что сохранили на шаге 1:

"C:\Program Files\1cv8\8.3.25.1374\bin\ragent.exe" -instsrvc -usr .\USR1CV8 -pwd "Пароль" -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"

Номера версий здесь условные — подставьте свои. Каталог -d обязан совпадать со старым, иначе новый агент поднимется с пустым кластером без баз.

Альтернатива без переустановки службы: поправить путь в параметре ImagePath ветки реестра HKLM\SYSTEM\CurrentControlSet\Services\<имя службы>. Меняете в пути только номер версии. Перед правкой экспортируйте ветку.

Шаг 5. Запустите службу и обновите консоль

net start "1C:Enterprise 8.3 Server Agent (x86-64)"
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"

Консоль администрирования должна быть той же сборки, что и сервер. Перерегистрация radmin.dll из папки новой версии убирает ошибку несовпадения версий при открытии кластера. Проверьте в консоли, что кластер виден, базы на месте, рабочий сервер запущен.

Для серверов с RAS дополнительно обновите службу ras.exe тем же способом, иначе rac cluster list будет отвечать ошибкой версии.

Шаг 6. Обновите клиентов

Клиент и сервер 1С 8.3 должны совпадать по сборке до последней цифры. Установите ту же версию на все рабочие места и терминальные серверы. Стартер 1cestart.exe сам выберет подходящую установленную версию, если в списке баз не зафиксирована конкретная сборка. Если в настройках базы у кого-то указана старая версия — уберите её.

4. Обновление конфигурации базы, лежащей на SQL Server

Платформа обновлена — теперь можно накатывать релиз типовой конфигурации. Войдите в Конфигуратор с кодом разрешения (/UC upd2026).

  1. Откройте Конфигурация → Поддержка → Обновить конфигурацию.
  2. Укажите файл обновления .cfu (или полный дистрибутив .cf, если перескакиваете через несколько релизов и цепочки .cfu нет).
  3. Пройдите сравнение-объединение. Для конфигурации на полной поддержке без доработок вопросов не будет.
  4. Нажмите Конфигурация → Обновить конфигурацию базы данных (F7).
  5. Примите изменения в окне реорганизации информации.
  6. Запустите базу в режиме 1С:Предприятие и дождитесь окончания обработчиков обновления данных.

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

Что происходит в SQL при реструктуризации

Во время шага 4 платформа создаёт новые таблицы, копирует данные и пересоздаёт индексы. Для базы на SQL Server это означает:

  • 📈 Рост журнала транзакций. Реструктуризация крупного регистра может прибавить к логу десятки гигабайт. Следите за свободным местом на диске с .ldf.
  • 🔒 Монопольный доступ. Обновление структуры требует, чтобы в базе не было других сеансов, включая фоновые задания. Поэтому блокировка регламентных заданий из раздела 1 нужна обязательно.
  • ⏱️ Время. Для базы 200–300 ГБ реструктуризация больших регистров занимает от десятков минут до нескольких часов. Закладывайте окно с запасом.

Если у вас доработанная конфигурация, сначала прогоните обновление на копии базы, восстановленной из того же .bak под другим именем. Так вы увидите конфликты объединения и время реструктуризации заранее.

5. Права SQL для 1С: какие роли нужны логину

В свойствах информационной базы в консоли указан логин, под которым рабочие процессы ходят в SQL Server. От его прав зависит, пройдёт ли обновление.

ОперацияДостаточная рольКомментарий
Повседневная работаdb_owner на базеПлатформа сама меняет структуру, db_datareader/db_datawriter мало
Обновление конфигурации базы данныхdb_owner на базеНужны права на создание и удаление таблиц и индексов
Создание новой базы из консолиdbcreator на сервереПлюс db_owner на созданной базе
Восстановление .baksysadmin или dbcreatorДелает администратор SQL, не логин 1С

Многие по привычке выдают логину 1С роль sysadmin. Работает, но это лишний доступ ко всем базам экземпляра. Для обновления хватает db_owner на конкретной базе.

USE [buh_prod];
CREATE USER [usr1c] FOR LOGIN [usr1c];
ALTER ROLE db_owner ADD MEMBER [usr1c];

После восстановления базы на другом сервере пользователь в базе может «потерять» логин: имя есть, а связь с логином сервера нарушена. Чинится так:

USE [buh_prod];
ALTER USER [usr1c] WITH LOGIN = [usr1c];

Учётная запись службы агента (USR1CV8) прав в SQL Server не требует, если база подключается под SQL-логином. Права в Windows ей нужны на каталог srvinfo и папку с платформой.

6. Ошибки после обновления сервера 1С и откат

Большинство проблем после обновления ловится по тексту ошибки за пару минут.

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

Откат платформы

  1. Остановите службу агента. Все сеансы кластера будут прерваны.
  2. Перерегистрируйте службу на ragent.exe старой версии командой из раздела 3 с прежними параметрами.
  3. Если меняли srvinfo — верните папку reg_1541 из копии.
  4. Запустите службу, перерегистрируйте radmin.dll старой версии.
  5. Верните старую сборку на клиентах, если уже успели обновить.

Откат базы из резервной копии

Если реструктуризация прошла частично или обработчики обновления испортили данные — восстанавливайте базу из .bak. Предварительно завершите все сеансы и заблокируйте вход.

USE master;
ALTER DATABASE [buh_prod] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
RESTORE DATABASE [buh_prod]
FROM DISK = N'D:\Backup\buh_prod_before_update.bak'
WITH REPLACE, STATS = 10;
ALTER DATABASE [buh_prod] SET MULTI_USER;

RESTORE ... WITH REPLACE перезаписывает базу целиком. Всё, что пользователи успели ввести после копии, пропадёт. Если после обновления в базе уже работали несколько часов — выгрузите новые документы или договоритесь о повторном вводе.

После восстановления базы платформу тоже верните на ту версию, под которой база работала, если новый релиз конфигурации откатили.

Если не помогло

  • 🔁 Восстановите .bak под другим именем на тестовом экземпляре SQL и повторите обновление там, с журналом технологического журнала платформы.
  • 📄 Попробуйте обновить конфигурацию из полного .cf вместо цепочки .cfu.
  • 🧪 Проверьте базу средствами SQL: DBCC CHECKDB покажет, не повреждены ли страницы, из-за которых падает реструктуризация.

7. Частые вопросы об обновлении 1С на SQL Server

Можно ли обновить платформу без остановки работы пользователей?
Нет. Агент сервера при смене версии перезапускается, и все сеансы кластера обрываются. Нужна остановка, хотя бы на 10–20 минут.
Нужно ли обновлять SQL Server вместе с платформой 1С?
Только если новая версия платформы не поддерживает ваш SQL Server. Сначала сверьте системные требования. Обновление СУБД — отдельный проект со своей копией и окном работ.
Можно ли держать на одном сервере две версии платформы?
Да, папки версий не мешают друг другу. Но один агент на одних портах работает только с одной версией. Для второй версии нужна отдельная служба на других портах и своём каталоге srvinfo.
Хватит ли выгрузки .dt вместо бэкапа SQL?
Для небольшой базы — да. Для базы в десятки и сотни гигабайт выгрузка и загрузка .dt идут часами, а восстановление .bak быстрее и не зависит от платформы.
Почему после обновления база стала работать медленнее?
После реструктуризации статистика SQL Server по новым таблицам может быть неактуальной. Обновите статистику и перестройте индексы регламентным заданием SQL в ближайшую ночь.