Обновление платформы 1С:Предприятие и MS SQL Server без потери данных

· 10 мин

Содержание

Обновить сервер 1С и SQL безопасно можно только по частям: сначала платформу 1С:Предприятие на сервере и на всех клиентах до одного номера сборки, затем — отдельным окном — MS SQL Server. Делать оба обновления за одну ночь не стоит: если что-то сломается, вы не поймёте, кто виноват.

Типичная боль администратора — после обновления пользователи утром видят ошибку подключения, а откатиться уже нечем. Ниже — порядок, при котором у вас на каждом шаге есть путь назад: проверка совместимости, копии, тестовый прогон, само обновление, настройка кластера и разбор ошибок.

Совместимость версий платформы 1С и SQL Server

Начните не с дистрибутива, а с таблицы версий. У каждой версии платформы есть список поддерживаемых СУБД, и он меняется: новые платформы перестают поддерживать старые SQL Server, а свежий SQL Server может не поддерживаться старой платформой.

Что проверить до начала работ:

  • 🔢 Номер платформы на сервере и на клиентах. Клиент подключается к серверу только при совпадении номера сборки — вплоть до последних цифр (8.3.xx.yyyy).
  • 🗄️ Версию SQL Server и её уровень обновлений. Посмотреть: SELECT @@VERSION; в SQL Server Management Studio.
  • 📋 Системные требования целевой платформы. Там прямо указано, какие версии MS SQL Server поддерживаются. Если вашей версии SQL нет в списке — сначала обновляйте СУБД, потом платформу.
  • ⚙️ Режим совместимости конфигурации. Свежая платформа запускает конфигурации со старым режимом совместимости. А вот новая версия типовой конфигурации может требовать платформу не ниже определённого номера — это написано в описании релиза.
  • 🔑 Лицензии. Программные лицензии сервера привязаны к оборудованию, а не к номеру платформы. Если меняете железо или переносите сервер на новую машину, лицензии придётся восстанавливать.

Какой порядок выбрать

СитуацияЧто обновлять первымПочему
Новой платформе нужен более свежий SQLSQL ServerИначе платформа не подключится к СУБД
Новая конфигурация требует новую платформуПлатформу 1СSQL остаётся рабочим
Переезд на новый серверСтавить всё с нуля на новой машинеСтарый сервер остаётся точкой отката
Только плановое обновление сборки платформыПлатформу 1СSQL не затрагивается вовсе

Самый спокойный сценарий — переезд на новую машину. Старый сервер продолжает работать, пока вы не убедитесь, что новый готов. Откат — это просто переключить пользователей обратно.

Резервные копии и тестовый стенд перед обновлением

Без двух независимых копий базы к обновлению не приступайте. Одна копия — средствами SQL Server, вторая — выгрузка .dt средствами 1С. Они страхуют от разных бед.

Копия средствами SQL Server

Полная копия с флагом COPY_ONLY не ломает цепочку ваших регулярных бэкапов:

BACKUP DATABASE [buh_main]
TO DISK = N'D:\Backup\buh_main_before_upgrade.bak'
WITH COPY_ONLY, COMPRESSION, CHECKSUM, STATS = 10;

RESTORE VERIFYONLY
FROM DISK = N'D:\Backup\buh_main_before_upgrade.bak'
WITH CHECKSUM;

Сжатие (COMPRESSION) недоступно в редакции Express — там просто уберите этот параметр.

Выгрузка .dt

Выгрузка не зависит от версии SQL Server: её можно загрузить на любую СУБД, включая файловый вариант. Это ваш спасательный круг, если резервную копию SQL не получится восстановить на старой версии.

Делается в Конфигураторе: Администрирование → Выгрузить информационную базу. На время выгрузки лучше отключить пользователей , чтобы данные были согласованными.

Копия настроек кластера

Скопируйте каталог srvinfo (по умолчанию C:\Program Files\1cv8\srvinfo). В нём лежит реестр кластера: список информационных баз, рабочих серверов, администраторов. Остановите перед копированием службу агента сервера — это оборвёт все сеансы, поэтому делайте это в нерабочее время.

Тестовый прогон

Восстановите копию под другим именем, например buh_test, и зарегистрируйте её в кластере тестового сервера. В свойствах этой базы в консоли кластера включите флажок Блокировка регламентных заданий включена.

Без этого флажка тестовая копия начнёт сама загружать банковские выписки, отправлять письма и обмениваться с ЭДО от имени рабочей организации.

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

Как обновить платформу 1С:Предприятие на сервере

Платформа ставится рядом со старой, в отдельный каталог C:\Program Files\1cv8\8.3.xx.yyyy\. Старая версия не удаляется — и не удаляйте её, пока не убедитесь, что всё работает.

Пошагово

  1. Заблокируйте вход. В консоли кластера откройте свойства базы, включите Блокировка начала сеансов включена, задайте время начала, сообщение для пользователей и код разрешения — с ним вы сами сможете зайти.
  2. Дождитесь завершения сеансов или завершите оставшиеся из консоли. Предупредите пользователей заранее: незаписанные документы пропадут.
  3. Запустите setup.exe из полного дистрибутива платформы для 64-битной Windows. В компонентах отметьте Сервер 1С:Предприятия 8, Администрирование сервера 1С:Предприятия и, если на машине есть веб-публикации, Модули расширения веб-сервера.
  4. Отметьте установку сервера как службы Windows и укажите ту же учётную запись, под которой служба работала раньше. Иначе у неё может не оказаться прав на каталог srvinfo и на сетевые папки.
  5. Проверьте, на какую версию смотрит служба. Узнайте имя службы и путь к исполняемому файлу:
sc query state= all | findstr /i "1C:Enterprise"
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"

В строке BINARY_PATH_NAME должен стоять путь к ragent.exe новой версии. Если там старый каталог — установщик не переписал службу, и сервер продолжит работать на прежней сборке.

  1. Перезапустите службу и откройте консоль кластера. Кластер, базы и администраторы должны подтянуться из srvinfo без изменений.
  2. Обновите клиентов до того же номера сборки. На каждом компьютере или через общий дистрибутив — способ зависит от того, как у вас устроена раздача платформы.
  3. Зайдите в базу с кодом разрешения, проверьте ключевые операции и снимите блокировку сеансов.

Если в списке баз у пользователя в свойствах базы жёстко указана старая версия в поле Версия 1С:Предприятия, клиент будет запускать именно её и не подключится к обновлённому серверу. Поле лучше оставить пустым или указать маску вроде 8.3.

Ключ запуска для нескольких версий

Если на сервере должны работать две версии одновременно (например, для разных баз), им нужны разные порты агента и диапазоны рабочих процессов. Вторую службу создают вручную с параметрами -regport, -port, -range и отдельным каталогом -d. Это уже отдельная задача; для обычного обновления достаточно одной службы.

Миграция и обновление MS SQL Server

Обновить MS SQL Server можно двумя путями. Выбор зависит от того, есть ли у вас запасное железо и окно простоя.

СпособКогда подходитРиски
Обновление на месте (setup → Upgrade)Один сервер, нет второй машиныОткат только переустановкой и восстановлением из копий
Перенос на новый экземпляр (backup → restore)Есть второй сервер или виртуалкаНужно перенести логины и переключить базы в кластере
Перенос через .dtБольшой скачок версий, смена СУБДДолго на больших базах

Обновление на месте

Мастер установки SQL Server поддерживает прямое обновление не со всех версий. Сверьтесь с матрицей путей обновления Microsoft для целевой версии: с очень старых выпусков придётся идти через промежуточный. Перед запуском остановите службу агента сервера 1С — так никто не будет писать в базы во время обновления СУБД.

Перенос на новый экземпляр

  1. Установите новый SQL Server. Параметры сортировки сервера — Cyrillic_General_CI_AS, это стандартный выбор для 1С.
  2. Создайте логин, под которым 1С подключается к СУБД. Ему нужны права на создание баз или роль sysadmin — по политике вашей компании.
  3. Восстановите базу:
RESTORE DATABASE [buh_main]
FROM DISK = N'D:\Backup\buh_main_before_upgrade.bak'
WITH MOVE N'buh_main'     TO N'E:\SQLData\buh_main.mdf',
     MOVE N'buh_main_log' TO N'F:\SQLLog\buh_main_log.ldf',
     STATS = 10;

Логические имена файлов посмотрите командой RESTORE FILELISTONLY FROM DISK = N'...'; — они не всегда совпадают с именем базы.

  1. Почините «осиротевшего» пользователя: в восстановленной базе он есть, а связи с логином нового сервера нет.
USE [buh_main];
ALTER USER [user1c] WITH LOGIN = [user1c];
  1. Обновите статистику и проверьте целостность:
EXEC sp_updatestats;
DBCC CHECKDB ([buh_main]) WITH NO_INFOMSGS;
  1. Переключите базу в кластере 1С. В консоли кластера откройте свойства информационной базы и в поле Сервер баз данных укажите новый сервер. Имя базы, пользователь и пароль СУБД — как на новом экземпляре.

На сервере 1С должен стоять клиентский драйвер для MS SQL Server нужной версии. Если его нет, платформа не сможет подключиться к СУБД, даже если сам SQL работает.

Уровень совместимости базы

После восстановления на новой версии база сохраняет старый уровень совместимости. Посмотреть его можно запросом:

SELECT name, compatibility_level FROM sys.databases;

Поднимать уровень сразу не обязательно. Новый оценщик кардинальности на некоторых запросах 1С работает медленнее старого. Правильный путь — поднять уровень на тестовой копии, прогнать закрытие месяца и тяжёлые отчёты и только потом решать для рабочей базы.

Настройка кластера 1С и производительность после обновления

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

На стороне SQL Server

  • 🧮 Максимальная память сервера (max server memory). Если 1С и SQL на одной машине, оставьте памяти и операционной системе, и рабочим процессам 1С. Ориентир для сервера на 64 ГБ при совместной установке — отдать SQL примерно 40–45 ГБ.
  • 🔀 Степень параллелизма (max degree of parallelism). Для нагрузки 1С обычно ставят 1:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 1; RECONFIGURE;
  • 💾 Модель восстановления. Если стоит FULL, а резервное копирование журнала не настроено, файл .ldf будет расти до заполнения диска. Либо настройте бэкапы журнала, либо переключите базу в SIMPLE.
  • 🔧 Планы обслуживания. После переезда на новый экземпляр их нужно создать заново: обновление статистики, перестроение индексов, резервные копии.

На стороне кластера 1С

В консоли кластера в свойствах рабочего сервера проверьте параметры Количество ИБ на процесс, Количество соединений на процесс и Безопасный расход памяти за один вызов. После обновления платформы они остаются прежними, но новая версия может вести себя иначе под той же нагрузкой.

В свойствах кластера задайте Интервал перезапуска рабочих процессов (например, раз в сутки) и Допустимый объем памяти. Это страхует от утечек памяти, которые иногда проявляются на новых сборках.

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

Если веб-клиент или HTTP-сервисы опубликованы через IIS или Apache, переопубликуйте их из новой версии платформы. Модуль веб-сервера должен быть той же сборки, что и сервер.

Ошибки после обновления сервера 1С и SQL и как откатиться

Большинство проблем после обновления повторяются от компании к компании. Найдите свой симптом:

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

Откат платформы 1С

Откат платформы — самый простой, если старая версия не удалена:

  1. Заблокируйте начало сеансов и дождитесь отключения пользователей.
  2. Остановите службу агента сервера.
  3. Верните путь к ragent.exe старой версии — переустановкой старого дистрибутива со службой или правкой пути к исполняемому файлу службы.
  4. Если менялся реестр кластера, восстановите каталог srvinfo из копии.
  5. Запустите службу и откатите клиентов на ту же старую сборку.

Откат SQL Server

Резервную копию с новой версии SQL Server нельзя восстановить на старой. Поэтому откат СУБД — это всегда возврат к копии, сделанной до обновления. Все данные, введённые после переключения, придётся переносить вручную.

Если пользователи уже поработали на новом сервере несколько дней, единственный способ вернуть базу на старый SQL с текущими данными — выгрузка .dt с нового сервера и загрузка на старом. Заложите на это время: базе в 100 ГБ может потребоваться несколько часов.

Поэтому переключайте пользователей на новый SQL в начале недели, а не перед закрытием месяца. Проблемы проявятся в первые 1–2 дня, когда откат ещё недорогой.

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

Нужно ли обновлять конфигурацию после обновления платформы?
Нет. Обновление платформы не меняет конфигурацию и данные. Конфигурацию обновляют отдельно, когда выходит её новый релиз.
Можно ли обновить платформу, не останавливая работу пользователей?
Установку можно провести заранее, но перезапуск службы агента оборвёт все сеансы. Его планируют на нерабочее время.
Нужна ли новая лицензия на сервер при переходе на новую сборку платформы?
Нет, лицензия не привязана к номеру сборки. Её восстанавливают только при смене оборудования или переносе на другой компьютер.
Можно ли держать базу 1С на SQL Server Express?
Технически да, но Express ограничивает размер одной базы 10 ГБ и использование памяти. Для рабочей многопользовательской базы этого обычно мало.
Что делать со старыми версиями платформы на сервере?
Удаляйте их через пару недель стабильной работы. До этого они — ваш быстрый способ отката.