Как администрировать 1С на MS SQL Server после перехода с файловой версии и уменьшить размер базы?

Системный администратор 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Переход с файловой версии «1С:Предприятие» на клиент-серверный вариант работы — это важный этап в развитии информационной системы предприятия. Часто администраторы-новички сталкиваются с тем, что база данных в формате SQL начинает занимать в десятки раз больше места, чем файл .1CD. Рассмотрим подробнее, почему так происходит, и разберем по шагам, как правильно настроить серверную базу для стабильной и быстрой работы.

Разбираемся с размером базы: почему 2 Гб превратились в 30 Гб?

Первое, что бросается в глаза после миграции — это резкое увеличение дискового пространства, занимаемого базой. Выясним причину этого явления. В MS SQL Server база состоит как минимум из двух файлов: файла данных (.MDF) и файла журнала транзакций (.LDF). Если сама база данных (данные таблиц) может занимать объем, близкий к выгрузке .dt, то журнал транзакций имеет свойство бесконтрольно расти.

Проанализируем ситуацию с моделью восстановления (Recovery Model). По умолчанию SQL Server часто создает базы в режиме Full (Полная модель). В этом режиме каждое изменение в базе записывается в лог и хранится там до тех пор, пока не будет сделан бэкап именно журнала транзакций. Если вы делаете только полный бэкап всей базы, лог не очищается и раздувается до десятков гигабайт.

Решение для уменьшения размера:

  1. Переведем базу в модель восстановления Simple (Простая). В этом режиме SQL Server автоматически перезаписывает старые транзакции в логе, не давая ему бесконечно расти. Для небольшой базы (до 50-100 Гб) и при отсутствии жестких требований к восстановлению «на любую секунду времени» — это оптимальный выбор.
  2. Выполним операцию Shrink (Сжатие). Это позволит вернуть неиспользуемое место операционной системе.

Для выполнения этих действий в SQL Server Management Studio (SSMS) выполним следующие команды (или воспользуемся графическим интерфейсом):


USE [Имя_Вашей_Базы];
ALTER DATABASE [Имя_Вашей_Базы] SET RECOVERY SIMPLE;
DBCC SHRINKDATABASE ([Имя_Вашей_Базы]);

Настройка оперативной памяти SQL Server

Рассмотрим важный нюанс взаимодействия SQL Server и сервера приложений 1С. По умолчанию SQL Server стремится захватить всю доступную оперативную память на сервере. Если сервер 1С (процессы rphost) запущен на той же машине, это неизбежно приведет к конфликту ресурсов и тормозам системы.

Что нужно сделать:

Зайдем в свойства сервера SQL в SSMS, перейдем на вкладку Memory (Память) и ограничим параметр Maximum server memory. Рекомендуется оставить операционной системе и процессам 1С не менее 4–8 Гб памяти (в зависимости от общего объема ОЗУ). Например, если на сервере 32 Гб, установите предел для SQL на уровне 20–24 Гб.

Настройка параллелизма (MAXDOP)

Выясним причину возможных блокировок при работе пользователей. 1С:Предприятие генерирует специфические запросы, которые SQL Server может пытаться выполнять параллельно на всех ядрах процессора. Это часто вызывает «взаимные блокировки» (deadlocks).

Разберем рекомендацию: в свойствах сервера SQL на вкладке Advanced найдем параметр Max Degree of Parallelism (MAXDOP). Для баз 1С крайне рекомендуется установить его значение в 1. Это заставит SQL Server выполнять каждый отдельный запрос в рамках одного потока, что значительно стабильнее для логики 1С.

Регламентное обслуживание базы данных

Просто установить SQL Server недостаточно — за базой нужно ухаживать. Посмотрим на список обязательных ежедневных и еженедельных операций, которые должны входить в ваш План обслуживания (Maintenance Plan):

  1. Обновление статистики (Update Statistics): SQL Server строит планы запросов на основе данных о распределении информации в таблицах. Если статистика устареет, сервер может выбрать неоптимальный путь выполнения запроса, и 1С начнет «тормозить».
  2. Реиндексация (Rebuild/Reorganize Indexes): В процессе работы данные в индексах фрагментируются. Еженедельное перестроение индексов позволяет поддерживать высокую скорость поиска данных.
  3. Резервное копирование (Backup): Настройте ежедневный полный бэкап средствами SQL. Это надежнее, чем выгрузка в .dt, так как позволяет восстановить базу гораздо быстрее.

Пример настройки обновления статистики через SQL запрос:


USE [Имя_Вашей_Базы];
EXEC sp_updatestats;

Оптимизация базы TempDB

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

Основные правила для TempDB:

Настройка сервера приложений 1С

Администрирование серверной 1С включает в себя и настройку самого кластера. Рассмотрим возможности консоли администрирования 1С:

Автоматический перезапуск процессов: Процессы rphost могут накапливать ошибки или утечки памяти. В настройках кластера (свойства рабочего сервера) установите «Интервал перезапуска» — например, 86400 секунд (раз в сутки). Система будет сама мягко завершать старые процессы и запускать новые, не прерывая работу пользователей.

Мгновенная инициализация файлов: Чтобы база и логи росли мгновенно, не тратя время на заполнение диска нулями, включите в Windows политику «Выполнение задач по обслуживанию томов» (Perform volume maintenance tasks) для учетной записи, под которой запущен SQL Server. Это значительно ускорит операции восстановления базы из копий.

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

← На главную