Обновление конфигурации 1С:Предприятие на сервере с Microsoft SQL Server — задача, которая требует не только технических навыков, но и понимания специфики работы клиент-серверных баз. Ошибки в этом процессе могут привести к потере данных, неработоспособности системы или конфликтам версий, особенно если речь идёт о многопользовательских конфигурациях типа 1С:ERP или 1С:Управление торговлей. В отличие от файлового варианта, где обновление сводится к замене файлов, SQL-версия требует синхронизации структуры базы данных с новой конфигурацией — и здесь кроются основные подводные камни.
Эта статья поможет избежать типичных ошибок: от подготовки резервной копии до финальной проверки работоспособности. Мы разберём как ручное обновление через Конфигуратор, так и автоматизированные сценарии для крупных инфраструктур. Особое внимание уделим нюансам работы с SQL Server 2019/2022, так как новые версии СУБД вводят изменения в механизмы блокировок и транзакций, критичные для 1С.
1. Подготовка к обновлению: резервное копирование и проверка совместимости
Первый и самый критичный этап — создание полноценной резервной копии базы данных. В отличие от файлового варианта, где достаточно скопировать папку, для SQL-сервера требуется:
- 📁 Полный бэкап базы данных через
SQL Server Management Studio(SSMS) или командуBACKUP DATABASE. Используйте опциюWITH COPY_ONLY, чтобы не нарушать цепочку транзакционных журналов. - 🔄 Копия конфигурации (.cf-файл) через
Конфигуратор → Администрирование → Выгрузить информационную базу. Это пригодится для отката, если обновление пойдёт не по плану. - 📋 Экспорт пользовательских настроек: права доступа, роли, внешние отчёты и обработки. Их потеря может парализовать работу отдела.
Перед обновлением обязательно проверьте совместимость версий:
- 🔹 Версия 1С:Платформы (например,
8.3.22.1864) должна поддерживать вашу конфигурацию (уточните в файлеversion.txtдистрибутива). - 🔹 Версия SQL Server: для 1С:Предприятие 8.3.20+ рекомендуется SQL Server 2017 и выше. Старые версии (2008 R2) могут не поддерживать новые типы данных.
⚠️ Внимание: Если ваша база использует Full-Text Search или Filestream, убедитесь, что новая версия 1С поддерживает эти функции. Некоторые обновления конфигураций (например, 1С:ЗУП 3.1 → 3.2) требуют ручного переноса полнотекстовых индексов.
2. Выбор метода обновления: ручной vs автоматизированный
Существует три основных способа обновления 1С на SQL-сервере, и выбор зависит от размера базы, количества пользователей и критичности системы:
| Метод | Плюсы | Минусы | Рекомендации |
|---|---|---|---|
| Ручное через Конфигуратор | Максимальный контроль, возможность отката на любом этапе | Долго для больших баз (100+ ГБ), требует остановки работы пользователей | Для баз до 50 ГБ или тестовых окружений |
Через rac (Расширение конфигурации) |
Минимальный простой, сохраняет пользовательские доработки | Не все обновления поддерживают этот метод, риск конфликтов | Для некритичных обновлений (например, ежемесячные релизы 1С:Бухгалтерии) |
| Автоматизированное (скрипты, 1С:EDT) | Подходит для кластеров, минимальное участие администратора | Сложная настройка, требует знания PowerShell/T-SQL | Для крупных предприятий с дежурными администраторами |
Для большинства средних компаний оптимален ручной метод. Он позволяет:
- 🔍 Проверить логи обновления (
1CV8Log\*.lgd) на ошибки. - 🛠️ Применить "горячие" исправления (hotfix) отдельно от основного обновления.
- 📊 Контролировать использование дискового пространства (обновление может временно увеличить размер базы на 20-30%).
Проверить свободное место на диске (минимум 1.5× размер базы)
Остановить фоновые задания (регламентные операции)
Уведомить пользователей о простое
Отключить антивирус (может блокировать временные файлы)
Скачать дистрибутив обновления с официального сайта 1С-->
3. Пошаговая инструкция: ручное обновление через Конфигуратор
Рассмотрим процесс на примере обновления 1С:Управление торговлей 11.5.6.123 → 11.5.7.456 на SQL Server 2019:
Запустите Конфигуратор от имени администратора. Подключитесь к базе в режиме
Конфигуратор (обычное приложение).Откройте меню
Администрирование → Поддержка → Обновить конфигурацию. Укажите путь к файлу обновления (.cfuили.zip).Выберите режим обновления:
- 🔄
Обновить конфигурацию базы данных— если меняется структура (добавляются новые таблицы, поля). - 🔄
Обновить только конфигурацию— если изменения затрагивают только логику (отчёты, обработки).
- 🔄
Дождитесь завершения. В логе (1CV8Log\1Cv8.log) ищите строки:
Обновление конфигурации базы данных завершено успешно.
Время выполнения: 00:15:22
Если процесс завис на этапе Обновление структуры БД более 30 минут — проверьте блокировки в SQL Server через запрос:
SELECT * FROM sys.dm_tran_locks;
После обновления конфигурации обязательно выполните реструктуризацию базы данных:
Перейдите в
Администрирование → Тестирование и исправление.Отметьте флаги:
- 🔧
Реструктуризация таблиц информационной базы - 🔧
Проверка логической целостности - 🔧
Проверка ссылочной целостности
- 🔧
Запустите процесс. Для баз размером >30 ГБ это может занять несколько часов.
- 📜 Включите трассировку через
DBCC TRACEON(1222, -1)для фиксации блокировок. - 🔍 Используйте SQL Server Profiler, чтобы отследить медленные запросы от 1С.
Обновите статистику SQL Server:
EXEC sp_updatestats;Это поможет оптимизатору запросов строить более эффективные планы выполнения.
Пересоберите индексы для таблиц с высокой фрагментацией (проверяется через
sys.dm_db_index_physical_stats). Скрипт для перестроения:ALTER INDEX ALL ON [dbo].[_1SJournal] REBUILD;Настройте параметры памяти в 1С:
- В файле
conf.cfgдобавьте:MaxMemoryUsage=8000 ; (в МБ, ~80% от физической RAM сервера)CacheSize=4000
- Для SQL Server ограничьте максимальную память через
sp_configure 'max server memory', 16384(пример для 16 ГБ).
- В файле
- 📊 Планы выполнения запросов в SQL Server Management Studio. Ищите операции
Table ScanилиHash Match— они часто указывают на отсутствие индексов. - 🔄 Журнал медленных запросов в 1С:
Администрирование → Журнал регистрации → Настройка → Запросы. - 🔄 Сравнивать и объединять конфигурации.
- 📦 Создавать пакеты обновлений для распределённых баз.
- 🤖 Автоматизировать тестирование после обновления.
- 📅 Планировщик обновлений по расписанию.
- 📊 Отчёты о результатах обновления (успех/неудача).
- 🔄 Возможность отката к предыдущей версии.
Тестовые сценарии:
- 📝 Проведите типичные операции: создание документа, формирование отчёта, печать.
- 🔍 Проверьте работу интеграций (например, обмен с 1С:Розница или Битрикс24).
Мониторинг производительности:
- 📈 Сравните время выполнения ключевых отчётов до и после обновления.
- 🖥️ Проверьте загрузку CPU/RAM на сервере SQL через Performance Monitor.
Что делать если обновление зависло?
Если процесс обновления "замирает" на этапе изменения структуры БД:
1. Проверьте журнал SQL Server Error Log на наличие ошибок типа timeout expired или deadlock.
2. Увеличьте таймаут команд в 1С: в файле conf.cfg добавьте строку SQLCommandTimeout=3600 (значение в секундах).
3. Если блокировка вызвана долго выполняющейся транзакцией, найдите её ID через SELECT session_id, command FROM sys.dm_exec_requests; и завершите командой KILL {session_id};.
⚠️ Внимание: Если в вашей базе используются распределённые информационные базы (РИБ), сначала обновите центральную базу, а затем — периферийные. Обратный порядок приведёт к ошибкам синхронизации.
4. Типичные ошибки и их решения
Даже при тщательной подготовке обновление может завершиться ошибкой. Рассмотрим самые распространённые случаи и способы их устранения:
| Ошибка | Причина | Решение |
|---|---|---|
Недостаточно прав для изменения структуры БД |
Пользователь 1С не имеет роли db_owner в SQL Server |
Выполните в SSMS:
|
Обнаружены несовместимые изменения конфигурации |
Попытка применить обновление от другой ветки (например, 8.3.21 для базы 8.3.20) | Скачайте правильную версию обновления или выполните поэтапное обновление через промежуточные релизы |
Timeout expired. The timeout period elapsed |
Долгое выполнение транзакции (типично для баз >100 ГБ) | Увеличьте таймаут в conf.cfg или разбейте обновление на части через 1С:EDT |
Ошибка блокировки при изменении таблицы [dbo].[_1S*] |
Активные пользовательские сессии или фоновые задания | Завершите все сессии через KILL или обновляйте в нерабочее время |
Если ошибка не устраняется стандартными методами, изучите расширенный лог SQL Server:
Если обновление прервалось на половине, не пытайтесь запустить его заново сразу. Сначала выполните Тестирование и исправление с флагом Восстановление структуры таблиц, затем повторите обновление.
5. Оптимизация производительности после обновления
Новые версии 1С часто вводят изменения, которые могут как ускорить, так и замедлить работу системы. После обновления:
Если после обновления пользователи жалуются на "тормоза", проверьте:
После обновления до версий 1С 8.3.20+ рекомендуется включить параметр UseExtendedDataTypes=Yes в conf.cfg. Это улучшает работу с большими числами и датами, но требует SQL Server 2016 или новее.
6. Автоматизация обновлений для крупных инфраструктур
Если в вашей компании десятки баз 1С, ручное обновление становится неэффективным. В этом случае поможет автоматизация:
Способ 1: PowerShell-скрипты
Пример скрипта для обновления конфигурации и реструктуризации:
$v8Path = "C:\Program Files\1cv8\8.3.22.1864\bin\1cv8.exe"
$baseName = "TradeBase"
$updateFile = "C:\Updates\ut11_5_7_456.cfu"
$adminLogin = "Администратор"
$adminPwd = "password"
& $v8Path DESIGNER /S "sqlserver\$baseName" /N $adminLogin /P $adminPwd /UpdateCfg "$updateFile" /Out "C:\Logs\update_$baseName.log"
& $v8Path DESIGNER /S "sqlserver\$baseName" /N $adminLogin /P $adminPwd /TestAndFixIB -Reconstruct
Способ 2: 1С:EDT (Enterprise Development Tools)
1С:EDT позволяет:
Способ 3: Инструменты сторонних разработчиков
Продукты вроде 1С:Апгрейд или Vanessa-ADD предоставляют:
⚠️ Внимание: При автоматизации обновлений настройте уведомления о сбоях через email или Telegram-bot. Например, в PowerShell добавьте блок:if ($LASTEXITCODE -ne 0) {Send-MailMessage -To "admin@company.ru" -Subject "Ошибка обновления 1С" -Body "База $baseName не обновлена!"
}
7. Проверка работоспособности и откат при необходимости
После обновления выполните комплексную проверку:
Проверка целостности данных:
DBCC CHECKDB([ИмяБазы]) WITH NO_INFOMSGS;
Если обнаружены критические ошибки, выполните откат:
Восстановите базу из бэкапа через SSMS:
RESTORE DATABASE [TradeBase] FROM DISK = 'C:\Backups\TradeBase.bak'WITH REPLACE, RECOVERY;
Если бэкап недоступен, используйте
Восстановление из файла (.dt)через Конфигуратор.
После успешного обновления сохраните файл конфигурации (.cf) и дамп базы данных в отдельном архиве. Это поможет быстро восстановить систему, если ошибки проявятся позже (например, через неделю).
FAQ: Частые вопросы по обновлению 1С на SQL
Можно ли обновлять 1С на SQL-сервере без остановки работы пользователей?
Технически возможно, но крайне не рекомендуется. Даже если использовать режим Обновить только конфигурацию, активные пользовательские сессии могут заблокировать таблицы, что приведёт к сбою. Исключение — обновление через распределённые информационные базы (РИБ), где изменения применяются постепенно.
Для минимального простоя:
- Обновите тестовую копию базы и проверьте её.
- Перенесите пользователей на тестовую базу на время обновления основной.
- Используйте SQL Server Always On для переключения на резервный сервер.
Как узнать, какая версия SQL Server совместима с моей 1С?
Официальные требования публикуются в документации к платформе 1С. Актуальные данные на 2026 год:
| Версия 1С:Платформы | Минимальная версия SQL Server | Рекомендуемая версия |
|---|---|---|
| 8.3.18–8.3.19 | 2008 R2 SP3 | 2016 |
| 8.3.20–8.3.21 | 2012 SP4 | 2017 |
| 8.3.22+ | 2016 SP2 | 2019/2022 |
Для конфигураций типа 1С:ERP или 1С:Комплексная автоматизация рекомендуется использовать SQL Server Enterprise Edition из-за поддержки Partitioning и Compression.
Что делать, если после обновления 1С перестала видеть базу на SQL-сервере?
Проблема обычно связана с:
- Изменением протокола аутентификации: проверьте, что в SQL Server Configuration Manager включён
TCP/IPиNamed Pipes. - Несовпадением версий клиента и сервера: обновите Native Client на сервере 1С до версии, соответствующей SQL Server.
- Блокировкой порта 1433 брандмауэром или антивирусом.
Для диагностики используйте утилиту SQLCMD:
sqlcmd -S sqlserver\instance -U sa -P password -Q "SELECT @@VERSION"
Если подключение проходит, но 1С не видит базу — проверьте права пользователя в SQL Server (должны быть роли public и 1Сv8).
Сколько времени занимает обновление большой базы (100+ ГБ)?
Время зависит от:
- 🖥️ Характеристик сервера: для базы 100 ГБ на SSD и 32 ГБ RAM обновление займёт 1–3 часа. На HDD и 16 ГБ RAM — до 6–8 часов.
- 🔧 Типа обновления:
- Обновление только конфигурации: 20–40 минут.
- Обновление с изменением структуры БД: 1–4 часа + время на реструктуризацию.
- 📡 Скорости дисковой подсистемы: для SQL Server критичен параметр IOPS (минимум 500 для баз >50 ГБ).
- 🔹 Разбейте базу на файлы данных (
.ndf) и разместите их на разных дисках. - 🔹 Временно отключите антивирусное сканирование файлов
.mdf/.ldf. - 🔹 Используйте параметр
/UC(обновление конфигурации без проверки зависимостей) для тестовых баз.
Для ускорения:
Нужно ли обновлять платформу 1С перед обновлением конфигурации?
Да, обновление платформы должно предшествовать обновлению конфигурации. Порядок действий:
- Обновите 1С:Платформу на сервере и клиентских машинах.
- Перезапустите службу
1С:Предприятие 8.3(ragent). - Обновите конфигурацию базы данных.
Исключение: если новая конфигурация требует более свежую платформу, чем установлена, обновление конфигурации будет заблокировано с ошибкой:
Несоответствие версий платформы. Требуется версия не ниже 8.3.22.1864
В этом случае сначала обновите платформу.