Регламент обновления 1С в клиент-серверном варианте с MS SQL

· 10 мин

Содержание

Правильно обновлять 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. Откройте «Администрирование серверов 1С Предприятия».
  2. Раскройте кластер, папку «Информационные базы», откройте свойства нужной базы.
  3. Отметьте «Блокировка начала сеансов включена».
  4. Задайте время начала и окончания блокировки, текст сообщения для пользователей.
  5. Впишите «Код разрешения», например upd2610.
  6. Отметьте «Блокировка регламентных заданий включена».
  7. Сохраните. В ветке «Сеансы» завершите оставшиеся сеансы.

Заблокировать регламентные задания нужно обязательно. Иначе обмен с сайтом или загрузка банковской выписки откроют фоновый сеанс в самый неподходящий момент.

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

Блокировка из самой программы

В типовых конфигурациях на БСП то же самое можно сделать изнутри: Администрирование → Обслуживание → Блокировка работы пользователей. Программа сама разошлёт предупреждение и завершит сеансы по таймеру. Регламентные задания эта форма тоже умеет блокировать — проверьте флажок.

Блокировка через 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С:Предприятие на сервере и клиентах

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

Сервер

  1. Убедитесь, что все сеансы во всех базах кластера завершены. Остановка службы оборвёт работу всех пользователей сервера, а не только обновляемой базы.
  2. Остановите службу агента сервера: 1C:Enterprise 8.3 Server Agent (x86-64).
  3. Запустите установщик сервера новой версии (дистрибутив 64-битного сервера). Отметьте компоненты «Сервер 1С:Предприятия» и установку как сервиса. Если используете ras, его службу тоже переводят на новую версию.
  4. Проверьте, на какой исполняемый файл смотрит служба:
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"

В строке BINARY_PATH_NAME должен стоять путь вида C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe с новым номером. Если там старая версия — служба осталась от прошлой установки, её нужно перерегистрировать.

  1. Запустите службу и откройте консоль кластера. Базы и настройки кластера сохраняются: они хранятся в каталоге srvinfo, а не в папке версии.

На всех рабочих серверах одного кластера версия платформы должна быть одинаковой.

Клиенты

В клиент-серверном варианте версия клиента должна совпадать с версией сервера. При несовпадении программа не подключится и выдаст сообщение о несоответствии версий.

  • 🖥️ На терминальном сервере — поставить клиент той же версии один раз.
  • 🖥️ На рабочих станциях — раздать дистрибутив через групповые политики, общую папку с setup.exe или средство развёртывания, которое у вас принято.
  • 🖥️ Старые версии клиента удалять не обязательно, 1cestart.exe выберет подходящую автоматически. Но через пару обновлений их стоит вычистить.

4. Обновление конфигурации базы данных в Конфигураторе

Теперь сам шаг, ради которого всё затевалось.

Пошагово

  1. Запустите Конфигуратор под пользователем с полными правами. Если блокировка включена, добавьте код разрешения: в ярлык или в командную строку /UC upd2610.
  2. Меню Конфигурация → Поддержка → Обновить конфигурацию….
  3. Укажите файл: 1cv8.cfu для обновления с конкретного релиза или 1cv8.cf для полного дистрибутива.
  4. Если конфигурация доработана, откроется окно сравнения и объединения. Разберите расхождения, сохраните результат.
  5. Выполните «Обновить конфигурацию базы данных» (клавиша F7). Конфигуратор покажет список изменённых объектов и спросит о принятии изменений.
  6. Дождитесь окончания реструктуризации. На больших базах это от десятков минут до нескольких часов.

Не прерывайте реструктуризацию и не перезапускайте службу 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. Войдите в «1С:Предприятие» под администратором (с кодом /UC, блокировка ещё действует).
  2. Дождитесь сообщения об успешном обновлении версии программы.
  3. Часть обработчиков — отложенные. Они работают в фоне уже после снятия блокировки. Их статус смотрят в разделе Администрирование → Обслуживание, в результатах обновления программы.

Если релизов несколько, повторяйте связку «Конфигуратор → первый запуск» для каждого. Пропуск обработчиков промежуточного релиза может оставить данные в неполном состоянии.

Что именно вы обновляете?

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. Проверка работы и снятие блокировок

Перед тем как пускать людей, пройдите короткий контроль.

Что проверитьКакПризнак проблемы
Версия конфигурацииГлавное меню → Справка → О программеНомер не совпадает с установленным
Обработчики обновленияРезультаты обновления в разделе Администрирование → ОбслуживаниеОшибки или зависшие отложенные обработчики
Журнал регистрацииАдминистрирование → Обслуживание → Журнал регистрации, отбор по уровню «Ошибка»Ошибки за время обновления
Ключевые документыОткройте и проведите копию типового документа в тестовом периоде или просто откройте несколько документов и отчётовОшибки форм, падения проведения
РасширенияАдминистрирование → Печатные формы, отчёты и обработки → РасширенияРасширение отключено или выдаёт ошибку применения
ОбменыРучной запуск обмена с сайтом, банком, ЭДООшибки синхронизации

Если проверяете проведение на копии документа в рабочей базе — удалите её сразу после проверки, иначе задвоятся движения.

Снятие блокировки

  1. В консоли кластера снимите флажки «Блокировка начала сеансов включена» и «Блокировка регламентных заданий включена». Либо снимите блокировку в форме программы, если ставили там.
  2. Убедитесь, что регламентные задания запустились: обмены и загрузки должны отработать по расписанию.
  3. Сообщите пользователям, что работа возобновлена, и попросите первые полчаса присылать любые ошибки.
Перед снятием блокировки
Выполнено: 0 / 7

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?
Не обязательна. Бэкап SQL быстрее и надёжнее для клиент-серверной базы. Выгрузка .dt полезна, если базу нужно развернуть на другой СУБД или в файловом варианте.
Сколько длится обновление базы на SQL Server?
От нескольких минут до нескольких часов. Время зависит от размера изменённых таблиц, дисков и того, затронуты ли крупные регистры. Точную цифру даёт только прогон на тестовой копии.
Нужно ли переводить базу в модель восстановления SIMPLE на время обновления?
Это сокращает рост журнала, но обрывает цепочку бэкапов журнала. После возврата в FULL сразу сделайте полный бэкап. Если места под лог хватает, модель лучше не трогать.
Новая версия платформы требует новых лицензий?
Обновление внутри 8.3 не требует покупки новых лицензий: имеющиеся лицензии сервера и клиентов продолжают работать. Если лицензии программные, следите, чтобы при обновлении не менялось оборудование сервера.