Как обновить базу 1С на MS SQL Server и не остановить работу офиса

· 9 мин

Содержание

Чтобы обновить 1С на SQL-сервере, сделайте полную копию базы средствами MS SQL (BACKUP DATABASE ... WITH COPY_ONLY), заблокируйте начало сеансов и регламентные задания в консоли кластера, затем в Конфигураторе загрузите файл обновления .cfu и примените изменения командой Конфигурация → Обновить конфигурацию базы данных. После этого первым войдите в базу в режиме «1С:Предприятие» под администратором, чтобы отработали обработчики обновления.

Порядок одинаковый для БП 3.0, ЗУП 3.1, УТ 11 и других типовых конфигураций на платформе 8.3. Отличие клиент-серверного варианта от файлового в трёх местах: копию делают на стороне СУБД, пользователей выгоняют через кластер серверов , а реструктуризация таблиц нагружает SQL Server и требует места на дисках.

Что проверить на сервере перед обновлением 1С

Обновление на SQL чаще ломается не в Конфигураторе, а из-за мелочей вокруг. Пройдите по списку заранее, лучше за день.

📌 Версия релиза и цепочка обновлений. Откройте Справка → О программе и запишите текущую версию конфигурации. Файл .cfu подходит только к определённым предыдущим релизам. Если вы отстали на несколько версий, понадобятся промежуточные: их перечень указан в описании каждого релиза.

📌 Версия платформы. Новый релиз конфигурации часто требует платформу с номером не ниже указанного в описании. Обновлять платформу нужно на сервере 1С и на всех клиентах. Сначала сервер, затем клиенты: клиент с другой версией к кластеру не подключится.

📌 Свободное место. Реструктуризация копирует данные изменённых таблиц. Ориентир: на диске с файлами данных SQL свободно не меньше размера самой большой таблицы базы, на диске журнала транзакций и tempdb — столько же. Проверить журнал можно запросом:

DBCC SQLPERF(LOGSPACE);

📌 Доработки. Если конфигурация снята с поддержки или в ней есть свои правки, обновление пойдёт через сравнение и объединение. Запланируйте на это отдельное время. Правки в расширениях .cfe переносятся проще, но их тоже стоит проверить после обновления.

📌 Окно работ. Для базы на 50–100 ГБ сама реструктуризация занимает от десятков минут до нескольких часов. Выбирайте вечер или выходной и предупредите пользователей.

Готовность к обновлению
Выполнено: 0 / 6

Резервная копия базы 1С средствами MS SQL

В клиент-серверном варианте главная страховка — бэкап на уровне СУБД. Выгрузка в .dt тоже полезна, но на больших базах она идёт долго и требует монопольного доступа.

Выполните в SQL Server Management Studio (подставьте имя своей базы и путь):

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 — проверка страниц при записи, битую копию увидите сразу;
  • COMPRESSION — сжатие; в редакции Express его нет, уберите параметр;
  • RESTORE VERIFYONLY — проверка, что файл читается и пригоден к восстановлению.

Не начинайте обновление, пока проверка копии не прошла без ошибок. Откат на SQL — это восстановление этого файла поверх базы, другого быстрого пути назад нет.

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

Какой способ обновления конфигурации на SQL выбрать

Способов три. Выбор зависит от того, правили ли конфигурацию и сколько баз нужно обновить.

СпособКогда подходитОграничения
Встроенный помощник Администрирование → Обслуживание → Обновление версии программыТиповая конфигурация без доработок, есть интернет-поддержкаРезервную копию в клиент-серверном режиме сам не делает, её делаете вы в SQL
Конфигуратор, Конфигурация → Поддержка → Обновить конфигурациюЕсть доработки, нужно объединение, нужен контроль каждого шагаРучная работа, нужен доступ к Конфигуратору
Пакетный запуск 1cv8.exe DESIGNER с параметрамиМного однотипных баз, обновление ночью по расписаниюТолько для конфигураций на поддержке без ручного объединения

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

Пошаговое обновление 1С на SQL-сервере через Конфигуратор

Шаг 1. Закройте доступ пользователям и регламентным заданиям

Откройте консоль администрирования серверов 1С, найдите информационную базу в разделе Информационные базы, откройте её свойства. Заполните поля:

  1. Отметьте Блокировка начала сеансов включена.
  2. Укажите время начала и окончания блокировки.
  3. В Сообщение о блокировке напишите, когда база снова будет доступна.
  4. Задайте Код разрешения, например UPD.
  5. Отметьте Блокировка регламентных заданий включена.

То же самое можно сделать из самой базы: Администрирование → Обслуживание → Блокировка работы пользователей.

Блокировка запрещает только новые входы. Уже открытые сеансы видны в консоли кластера в разделе Сеансы. Попросите людей выйти, а оставшиеся сеансы завершите из контекстного меню.

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

Шаг 2. Запустите Конфигуратор с кодом разрешения

В окне запуска выберите базу, нажмите Конфигуратор. Если база уже заблокирована, добавьте в дополнительные параметры строки запуска /UC UPD, иначе Конфигуратор тоже не пустят.

Шаг 3. Загрузите файл обновления

Откройте Конфигурация → Поддержка → Обновить конфигурацию, выберите поиск файла или укажите путь к 1Cv8.cfu вручную.

  • Конфигурация на поддержке без правок — обновление пройдёт без вопросов.
  • Есть доработки — откроется окно сравнения. Проверьте объекты, изменённые и у вас, и у поставщика, и решите по каждому: взять версию поставщика или объединить. Свои правки в общих модулях после объединения просмотрите глазами.

Если релизов несколько, грузите их по очереди. После каждого промежуточного шаг 4 обязателен.

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

Выполните Конфигурация → Обновить конфигурацию базы данных (клавиша F7). Конфигуратор покажет список изменений структуры, подтвердите его кнопкой Принять.

Начнётся реструктуризация: платформа меняет таблицы в SQL. Этот этап требует монопольного доступа, поэтому шаг 1 был обязателен. Не прерывайте процесс, даже если прогресс-бар стоит на месте: на больших таблицах SQL Server работает внутри одной операции.

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

Шаг 5. Запустите обработчики обновления

Закройте Конфигуратор и войдите в базу в режиме «1С:Предприятие» под администратором (с тем же /UC UPD, пока блокировка включена). Программа сообщит об изменении версии и запустит обработчики, которые переносят и пересчитывают данные под новую версию.

Часть обработчиков работает в фоне после входа пользователей. Это «отложенное обновление». Его ход видно на странице Администрирование → Обслуживание → Результаты обновления и дополнительная обработка данных. Регламентные задания должны быть включены, иначе оно не завершится.

Шаг 6. Снимите блокировку

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

Сбои при обновлении на сервере и как их разобрать

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

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

Если база после ошибки ведёт себя странно, не повторяйте обновление вслепую. Восстановите копию из раздела про бэкап, разберите журнал регистрации и лог SQL Server, затем повторите на тестовой копии.

Обслуживание SQL-базы после обновления 1С

Реструктуризация пересоздаёт таблицы, и статистика запросов SQL Server устаревает. Первые дни после обновления это выглядит как «1С стала тормозить».

Что сделать сразу после работ:

  1. Обновите статистику по базе:
USE [buh_prod];
EXEC sp_updatestats;
  1. Очистите кэш планов, чтобы SQL построил их заново под новую структуру:
DBCC FREEPROCCACHE;
  1. Запустите перестроение индексов через план обслуживания или свой скрипт в ближайшую ночь, а не в рабочее время: операция тяжёлая.

  2. Если журнал транзакций сильно вырос, сделайте бэкап журнала (для модели восстановления Full) и только потом, при необходимости, сожмите файл лога. Сжимать файлы данных после обновления не нужно: они снова вырастут.

💡 Если у пользователей после обновления странно ведут себя формы или остались старые команды, очистите локальный кэш клиента, запустив 1cv8.exe с параметром /ClearCache. Кэш сервера кластера без необходимости не трогайте.

Автоматизация обновлений 1С на SQL

Когда баз больше трёх и все на поддержке, ручная работа отнимает вечера. Пакетный режим Конфигуратора закрывает шаги 2–4 одной командой.

Пример .bat-файла (путь к платформе и имена подставьте свои):

@echo off
set V8="C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe"

%V8% DESIGNER /S "srv1c\buh_prod" /N "Администратор" /P "пароль" /UC "UPD" ^
  /UpdateCfg "D:\Updates\1Cv8.cfu" /UpdateDBCfg ^
  /Out "D:\Updates\buh_prod_update.log" /DisableStartupDialogs

echo Код завершения: %ERRORLEVEL%

Что делают параметры:

  • /S — сервер кластера и имя базы на нём;
  • /UC — код разрешения, чтобы войти в заблокированную базу;
  • /UpdateCfg — загрузка файла обновления .cfu;
  • /UpdateDBCfg — обновление конфигурации базы данных;
  • /Out — лог, по которому утром проверяете результат.

Блокировку сеансов перед запуском можно включить утилитой rac командой rac infobase update с параметрами блокировки сеансов и регламентных заданий. Точный набор ключей для вашей версии платформы смотрите в rac help infobase.

Полная ночная цепочка обычно выглядит так:

  1. Задание SQL Agent делает BACKUP DATABASE ... WITH COPY_ONLY.
  2. Скрипт блокирует сеансы через rac.
  3. Пакетный Конфигуратор обновляет конфигурацию и структуру.
  4. Скрипт запускает базу в режиме ENTERPRISE под администратором, чтобы стартовали обработчики.
  5. Блокировка снимается, лог уходит администратору на почту или в мессенджер.

Пароль администратора в .bat храните в файле с ограниченным доступом или используйте аутентификацию операционной системы. Не кладите скрипт в общую папку.

Для десятков баз удобнее готовые решения: у фирмы 1С есть конфигурация «Центр управления конфигурациями», существуют и сторонние скрипты на OneScript. Логика внутри та же, что в примере выше.

Частые вопросы

Нужно ли останавливать службу SQL Server на время обновления 1С?
Нет. SQL Server должен работать: реструктуризация выполняется именно им. Останавливать нужно только доступ пользователей к базе через блокировку сеансов.
Можно ли обновить 1С на SQL без монопольного режима?
Загрузить .cfu в основную конфигурацию можно при работающих пользователях. Применить изменения структуры базы данных — нет, для этого нужен монопольный доступ.
Сколько времени займёт обновление базы на 100 ГБ?
Ориентировочно от 30 минут до 3–4 часов. Время зависит от того, какие таблицы меняет релиз, и от скорости дисков. Точную цифру даёт прогон на тестовой копии.
Чем копия .bak лучше выгрузки .dt перед обновлением?
Бэкап SQL делается без выгона пользователей, быстрее и восстанавливается за минуты. Выгрузка .dt полезна для переноса базы на другую СУБД или в файловый вариант.
Обновлять ли платформу и конфигурацию в один вечер?
Можно, но по отдельности проще найти причину сбоя. Сначала обновите платформу на сервере и клиентах, проверьте вход, затем конфигурацию.