Обновление платформы и конфигурации 1С в связке с MS SQL: порядок работ и откат
Содержание
Чтобы обновить 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С откройте свойства информационной базы и включите:
Блокировка начала сеансов включена— задайте сообщение и код разрешения, напримерupd2026.Блокировка регламентных заданий включена— иначе обмены и загрузки курсов будут лезть в базу во время работ.- Завершите текущие сеансы в узле «Сеансы».
Перед завершением сеансов предупредите пользователей: несохранённые документы пропадут. Работы планируйте на вечер или выходные. Сами вы входите в заблокированную базу с параметром запуска /UC upd2026.
2. Совместимость версий платформы 1С и MS SQL Server
Каждая версия платформы 8.3 работает с ограниченным списком версий SQL Server. Новый релиз платформы может перестать поддерживать старый SQL Server, а свежий SQL Server — не поддерживаться старой платформой. Список актуальных пар публикуется в системных требованиях платформы на сайте фирмы 1С и в файле readme дистрибутива.
Что проверить до установки:
| Что сверяем | Как узнать | На что смотреть |
|---|---|---|
| Версия SQL Server | SELECT @@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).
- Откройте
Конфигурация → Поддержка → Обновить конфигурацию. - Укажите файл обновления
.cfu(или полный дистрибутив.cf, если перескакиваете через несколько релизов и цепочки.cfuнет). - Пройдите сравнение-объединение. Для конфигурации на полной поддержке без доработок вопросов не будет.
- Нажмите
Конфигурация → Обновить конфигурацию базы данных(F7). - Примите изменения в окне реорганизации информации.
- Запустите базу в режиме 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 на созданной базе |
Восстановление .bak | sysadmin или 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С и откат
Большинство проблем после обновления ловится по тексту ошибки за пару минут.
Откат платформы
- Остановите службу агента. Все сеансы кластера будут прерваны.
- Перерегистрируйте службу на
ragent.exeстарой версии командой из раздела 3 с прежними параметрами. - Если меняли
srvinfo— верните папкуreg_1541из копии. - Запустите службу, перерегистрируйте
radmin.dllстарой версии. - Верните старую сборку на клиентах, если уже успели обновить.
Откат базы из резервной копии
Если реструктуризация прошла частично или обработчики обновления испортили данные — восстанавливайте базу из .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покажет, не повреждены ли страницы, из-за которых падает реструктуризация.