Как обновить базу 1С на MS SQL Server и не остановить работу офиса
Содержание
Чтобы обновить 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 ГБ сама реструктуризация занимает от десятков минут до нескольких часов. Выбирайте вечер или выходной и предупредите пользователей.
Резервная копия базы 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С, найдите информационную базу в разделе Информационные базы, откройте её свойства. Заполните поля:
- Отметьте
Блокировка начала сеансов включена. - Укажите время начала и окончания блокировки.
- В
Сообщение о блокировкенапишите, когда база снова будет доступна. - Задайте
Код разрешения, напримерUPD. - Отметьте
Блокировка регламентных заданий включена.
То же самое можно сделать из самой базы: Администрирование → Обслуживание → Блокировка работы пользователей.
Блокировка запрещает только новые входы. Уже открытые сеансы видны в консоли кластера в разделе Сеансы. Попросите людей выйти, а оставшиеся сеансы завершите из контекстного меню.
Принудительное завершение сеанса обрывает работу пользователя без сохранения. Делайте это только после объявленного времени и когда убедились, что никто не проводит важные документы.
Шаг 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С стала тормозить».
Что сделать сразу после работ:
- Обновите статистику по базе:
USE [buh_prod];
EXEC sp_updatestats;
- Очистите кэш планов, чтобы SQL построил их заново под новую структуру:
DBCC FREEPROCCACHE;
Запустите перестроение индексов через план обслуживания или свой скрипт в ближайшую ночь, а не в рабочее время: операция тяжёлая.
Если журнал транзакций сильно вырос, сделайте бэкап журнала (для модели восстановления 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.
Полная ночная цепочка обычно выглядит так:
- Задание SQL Agent делает
BACKUP DATABASE ... WITH COPY_ONLY. - Скрипт блокирует сеансы через
rac. - Пакетный Конфигуратор обновляет конфигурацию и структуру.
- Скрипт запускает базу в режиме
ENTERPRISEпод администратором, чтобы стартовали обработчики. - Блокировка снимается, лог уходит администратору на почту или в мессенджер.
Пароль администратора в .bat храните в файле с ограниченным доступом или используйте аутентификацию операционной системы. Не кладите скрипт в общую папку.
Для десятков баз удобнее готовые решения: у фирмы 1С есть конфигурация «Центр управления конфигурациями», существуют и сторонние скрипты на OneScript. Логика внутри та же, что в примере выше.