Регламент обновления 1С в клиент-серверном варианте с MS SQL
Содержание
Правильно обновлять 1С на SQL Server нужно в таком порядке: полный бэкап базы средствами SQL, блокировка сеансов и регламентных заданий в консоли кластера, установка платформы (если она меняется), обновление конфигурации в Конфигураторе, запуск в режиме «1С:Предприятие» для обработчиков обновления и в конце обслуживание SQL: статистика и индексы. Пропуск любого шага — это либо риск потерять данные, либо неделя жалоб «всё тормозит».
Регламент одинаков для одной базы на небольшом сервере и для кластера с десятком баз. Команды и пути даны для платформы 8.3 и MS SQL Server 2016 и новее.
1. Подготовка сервера и резервная копия базы SQL
Обновление 1С на SQL начинается задолго до нажатия кнопки «Обновить». Сначала проверьте, что серверу хватит ресурсов на реструктуризацию.
Что проверить заранее:
- 💾 Место на диске журнала транзакций. При реструктуризации крупных таблиц SQL пишет в лог объём, сравнимый с размером этих таблиц. База на 80 ГБ в модели FULL легко добавит 30–50 ГБ в
.ldf. - 💾 Место под бэкап. Нужен объём, равный сжатой копии базы, плюс запас.
- 🧩 Требования к платформе. В описании нового релиза конфигурации указана минимальная версия платформы. Если текущая ниже — сначала обновляете платформу.
- 🧩 Цепочка релизов. Файл обновления
.cfuподходит только к определённым предыдущим релизам. Если пропущено несколько версий, придётся ставить их по очереди или использовать полный.cf. - 🧩 Доработки. Если в базе снят режим «на поддержке» или есть правки в основной конфигурации, закладывайте время на сравнение и объединение. Расширения обновляются отдельно, их совместимость проверяют после обновления.
Бэкап средствами SQL Server
Выгрузка .dt из Конфигуратора тоже копия, но для SQL-базы она медленная и требует монопольного режима. Основной страховкой должен быть бэкап самой СУБД. Сделайте его перед стартом работ, когда пользователи уже отключены (см. раздел 2):
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не ломает цепочку регулярных бэкапов по расписанию.CHECKSUMпроверяет страницы при записи,RESTORE VERIFYONLY— читаемость файла.COMPRESSIONнедоступна в редакции Express: там просто уберите параметр.
Если есть тестовый сервер, восстановите на нём этот бэкап и прогоните обновление сначала там. Вы узнаете реальное время реструктуризации и заранее увидите конфликты в доработанной конфигурации.
Не начинайте обновление, пока RESTORE VERIFYONLY не завершился без ошибок.
2. Как отключить пользователей и заблокировать сеансы
Для обновления структуры базы данных нужен монопольный доступ. Пока в базе есть хоть один сеанс, Конфигуратор не применит изменения.
Блокировка в консоли кластера
- Откройте «Администрирование серверов 1С Предприятия».
- Раскройте кластер, папку «Информационные базы», откройте свойства нужной базы.
- Отметьте «Блокировка начала сеансов включена».
- Задайте время начала и окончания блокировки, текст сообщения для пользователей.
- Впишите «Код разрешения», например
upd2610. - Отметьте «Блокировка регламентных заданий включена».
- Сохраните. В ветке «Сеансы» завершите оставшиеся сеансы.
Заблокировать регламентные задания нужно обязательно. Иначе обмен с сайтом или загрузка банковской выписки откроют фоновый сеанс в самый неподходящий момент.
Принудительное завершение сеанса обрывает работу пользователя без сохранения. Предупредите людей заранее и делайте это в согласованное окно, обычно вечером или в выходной.
Блокировка из самой программы
В типовых конфигурациях на БСП то же самое можно сделать изнутри: Администрирование → Обслуживание → Блокировка работы пользователей. Программа сама разошлёт предупреждение и завершит сеансы по таймеру. Регламентные задания эта форма тоже умеет блокировать — проверьте флажок.
Блокировка через rac
Для скриптов подходит утилита rac, работающая через сервер администрирования ras. Общая схема:
rac cluster list
rac infobase summary list --cluster=<ID_кластера>
rac infobase update --cluster=<ID_кластера> --infobase=<ID_базы> ^
--infobase-user=Администратор --infobase-pwd=*** ^
--sessions-deny=on --scheduled-jobs-deny=on --permission-code=upd2610
Точный набор параметров для вашей версии сверьте по rac help infobase.
С кодом разрешения в заблокированную базу можно войти. Его передают параметром /UC, например при запуске Конфигуратора из командной строки.
3. Обновление платформы 1С:Предприятие на сервере и клиентах
Если новый релиз конфигурации работает на текущей платформе — этот раздел пропускайте. Платформу без нужды не меняют вместе с конфигурацией: два изменения сразу усложняют поиск виновника, если что-то пойдёт не так.
Сервер
- Убедитесь, что все сеансы во всех базах кластера завершены. Остановка службы оборвёт работу всех пользователей сервера, а не только обновляемой базы.
- Остановите службу агента сервера:
1C:Enterprise 8.3 Server Agent (x86-64). - Запустите установщик сервера новой версии (дистрибутив 64-битного сервера). Отметьте компоненты «Сервер 1С:Предприятия» и установку как сервиса. Если используете
ras, его службу тоже переводят на новую версию. - Проверьте, на какой исполняемый файл смотрит служба:
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"
В строке BINARY_PATH_NAME должен стоять путь вида C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe с новым номером. Если там старая версия — служба осталась от прошлой установки, её нужно перерегистрировать.
- Запустите службу и откройте консоль кластера. Базы и настройки кластера сохраняются: они хранятся в каталоге
srvinfo, а не в папке версии.
На всех рабочих серверах одного кластера версия платформы должна быть одинаковой.
Клиенты
В клиент-серверном варианте версия клиента должна совпадать с версией сервера. При несовпадении программа не подключится и выдаст сообщение о несоответствии версий.
- 🖥️ На терминальном сервере — поставить клиент той же версии один раз.
- 🖥️ На рабочих станциях — раздать дистрибутив через групповые политики, общую папку с
setup.exeили средство развёртывания, которое у вас принято. - 🖥️ Старые версии клиента удалять не обязательно,
1cestart.exeвыберет подходящую автоматически. Но через пару обновлений их стоит вычистить.
4. Обновление конфигурации базы данных в Конфигураторе
Теперь сам шаг, ради которого всё затевалось.
Пошагово
- Запустите Конфигуратор под пользователем с полными правами. Если блокировка включена, добавьте код разрешения: в ярлык или в командную строку
/UC upd2610. - Меню
Конфигурация → Поддержка → Обновить конфигурацию…. - Укажите файл:
1cv8.cfuдля обновления с конкретного релиза или1cv8.cfдля полного дистрибутива. - Если конфигурация доработана, откроется окно сравнения и объединения. Разберите расхождения, сохраните результат.
- Выполните «Обновить конфигурацию
базы данных» (клавиша
F7). Конфигуратор покажет список изменённых объектов и спросит о принятии изменений. - Дождитесь окончания реструктуризации. На больших базах это от десятков минут до нескольких часов.
Не прерывайте реструктуризацию и не перезапускайте службу SQL в процессе. Прерванное обновление структуры — прямая дорога к восстановлению из бэкапа.
Динамическое обновление (без монопольного режима) на рабочих SQL-базах применять не стоит. Пользователи останутся на старой версии метаданных, а нагрузка на сервер вырастет.
Обновление из командной строки
Для пакетного обновления нескольких баз Конфигуратор запускают в пакетном режиме:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER ^
/S "srv1c\buh_prod" /N "Администратор" /P "***" /UC upd2610 ^
/UpdateCfg "D:\Updates\1cv8.cfu" /UpdateDBCfg ^
/Out "D:\Logs\buh_prod_update.log" /DisableStartupDialogs
Ключ /UpdateCfg загружает обновление, /UpdateDBCfg применяет его к базе. Лог в /Out проверяйте после каждого запуска: пакетный режим не показывает ошибок на экране. Для доработанных конфигураций такой способ не подходит, там нужно ручное объединение.
Первый запуск в режиме «1С:Предприятие»
После Конфигуратора обновление не закончено. При первом входе в программу типовая конфигурация выполняет обработчики обновления: перезаполняет регистры, переносит настройки.
- Войдите в «1С:Предприятие» под администратором (с кодом
/UC, блокировка ещё действует). - Дождитесь сообщения об успешном обновлении версии программы.
- Часть обработчиков — отложенные. Они работают в фоне уже после снятия блокировки. Их статус смотрят в разделе
Администрирование → Обслуживание, в результатах обновления программы.
Если релизов несколько, повторяйте связку «Конфигуратор → первый запуск» для каждого. Пропуск обработчиков промежуточного релиза может оставить данные в неполном состоянии.
5. Обслуживание SQL Server после обновления 1С
Реструктуризация пересоздаёт часть таблиц и индексов. Статистика устаревает, планы запросов становятся неоптимальными. Отсюда классическая жалоба утра понедельника: «после обновления 1С тормозит».
Обновите статистику
Минимум, который делают всегда:
USE [buh_prod];
EXEC sp_updatestats;
На крупных базах лучше полное обновление статистики по ключевым таблицам с WITH FULLSCAN в рамках плана обслуживания.
Перестройте индексы
Если обновление затронуло крупные регистры, запустите задачу перестроения или реорганизации индексов из плана обслуживания SQL. Ориентир: фрагментация выше 30% — перестроение, 5–30% — реорганизация.
Очистите кэш планов — осторожно
DBCC FREEPROCCACHE;
Команда сбрасывает кэш планов всего экземпляра SQL, а не одной базы. Если на сервере крутятся другие базы, после неё на несколько минут вырастет нагрузка на процессор. Выполняйте только в окне обслуживания.
Верните журнал транзакций в норму
- 📈 В модели FULL после реструктуризации сделайте бэкап журнала — это освободит место внутри
.ldf. - 📉 Сжимать файл журнала (
DBCC SHRINKFILE) имеет смысл только если он вырос в разы и место на диске критично. Регулярное сжатие вредит: файл всё равно вырастет снова.
Почистите кэш на клиентах
Если у пользователей появляются странные ошибки форм после обновления, запустите клиент с ключом /ClearCache или удалите кэш вручную из профиля пользователя. Делайте это при закрытом клиенте.
6. Проверка работы и снятие блокировок
Перед тем как пускать людей, пройдите короткий контроль.
| Что проверить | Как | Признак проблемы |
|---|---|---|
| Версия конфигурации | Главное меню → Справка → О программе | Номер не совпадает с установленным |
| Обработчики обновления | Результаты обновления в разделе Администрирование → Обслуживание | Ошибки или зависшие отложенные обработчики |
| Журнал регистрации | Администрирование → Обслуживание → Журнал регистрации, отбор по уровню «Ошибка» | Ошибки за время обновления |
| Ключевые документы | Откройте и проведите копию типового документа в тестовом периоде или просто откройте несколько документов и отчётов | Ошибки форм, падения проведения |
| Расширения | Администрирование → Печатные формы, отчёты и обработки → Расширения | Расширение отключено или выдаёт ошибку применения |
| Обмены | Ручной запуск обмена с сайтом, банком, ЭДО | Ошибки синхронизации |
Если проверяете проведение на копии документа в рабочей базе — удалите её сразу после проверки, иначе задвоятся движения.
Снятие блокировки
- В консоли кластера снимите флажки «Блокировка начала сеансов включена» и «Блокировка регламентных заданий включена». Либо снимите блокировку в форме программы, если ставили там.
- Убедитесь, что регламентные задания запустились: обмены и загрузки должны отработать по расписанию.
- Сообщите пользователям, что работа возобновлена, и попросите первые полчаса присылать любые ошибки.
7. Если обновление пошло не так
Сбой посреди процесса — не катастрофа, если бэкап из раздела 1 на месте.
- 🔁 Реструктуризация упала с ошибкой. Прочитайте текст ошибки в окне или в логе
/Out. Частые причины — нехватка места под журнал транзакций иtempdb, обрыв связи с SQL. Освободите место и повторитеF7. Если база не открывается — восстанавливайте из бэкапа. - 🔁 Ошибка обработчика обновления при первом запуске. Не запускайте повторно бесконечно. Сохраните текст ошибки из журнала регистрации. Часто причина — данные, которые обработчик не ожидал (битые ссылки, доработки). Тут нужен разбор, а не перезапуск.
- 🔁 Клиенты не подключаются после смены платформы. Проверьте версию клиента на машине пользователя и путь службы агента (
sc qc). Обычно оказывается, что служба осталась на старой версии или клиент на машине не обновился. - 🔁 Откат. Восстановление делается средствами SQL:
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;
ROLLBACK IMMEDIATE обрывает все подключения к базе. Перед этим убедитесь, что блокировка сеансов в кластере ещё включена, а регламентные задания стоят.
Если откатывали и платформу, верните службу агента на прежнюю версию: прежний релиз остаётся установленным, пока вы его не удалили.
Частые вопросы
Можно ли обновлять 1С на SQL в рабочее время?
Нужна ли выгрузка .dt, если есть бэкап SQL?
.dt полезна, если базу нужно развернуть на другой СУБД или в файловом варианте.