Ситуация, когда после выполнения регламентной процедуры «Тестирование и исправление» (ТиИ) системный диск внезапно оказывается переполненным, является классической проблемой при эксплуатации 1С:Предприятие в связке с MS SQL Server. Давайте вместе разберем, почему это происходит, какие механизмы задействованы в этом процессе и как нам оперативно вернуть дисковое пространство, не навредив при этом работоспособности системы.
В процессе работы мы проанализируем основные «пожиратели» места: журналы транзакций, системные базы данных SQL и временные файлы сервера приложений. Рассмотрим пошагово методику очистки и профилактики подобных инцидентов.
Выясним причину: при запуске ТиИ, особенно если выбраны пункты «Реиндексация таблиц» или «Реструктуризация таблиц», SQL Server совершает колоссальное количество операций записи. Каждое изменение данных, каждое перестроение индекса фиксируется в файле журнала транзакций .LDF. Если база данных настроена неправильно, этот файл может вырасти в несколько раз, превысив размер самой базы данных.
Рассмотрим подробнее механизм управления этим файлом через SQL Server Management Studio (SSMS):
Full (Полная), то файл лога будет расти до тех пор, пока не будет сделан бэкап журнала транзакций.Simple (Простая). Это позволит SQL Server автоматически перезаписывать неактивные части лога.Shrink. Нажмем правой кнопкой на базу -> «Задачи» (Tasks) -> «Сжать» (Shrink) -> «Файлы» (Files). В типе файла выберем «Журнал» (Log) и нажмем ОК.Важный момент: если вы решите оставить модель Full, то единственным способом «укротить» лог будет настройка регулярного (например, каждые 15-30 минут) резервного копирования журнала транзакций.
Проанализируем ситуацию с системной базой tempdb. Эта база используется SQL-сервером как «черновик» для хранения временных таблиц, промежуточных результатов сортировки и других вспомогательных операций. При реиндексации больших таблиц 1С, tempdb может занимать десятки и сотни гигабайт.
Посмотрим, как решить эту проблему:
tempdb — это перезапуск службы SQL Server. При каждом старте службы файлы этой базы пересоздаются с начальным размером.tempdb часто находятся на диске C:. Нам необходимо перенести их на другой логический диск.
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'D:\SQLData\templog.ldf');
GO
После выполнения этого кода и перезапуска службы SQL, файлы будут создаваться на диске D:, что обезопасит системный раздел от переполнения.
Рассмотрим еще одного скрытого потребителя места — журнал регистрации. При массовых операциях (каковыми является тестирование и исправление) 1С записывает в журнал тысячи событий. По умолчанию эти данные хранятся в папке сервера приложений 1С.
Выясним, где искать эти файлы: обычно это путь C:\Program Files\1cv8\srvinfo\reg_1541\.... Внутри папок с GUID баз находится папка 1Cv8Log.
Что мы можем сделать:
srvinfo (данные кластера) на другой диск. Это делается путем изменения параметров запуска службы 1C:Enterprise 8.3 Server Agent в реестре Windows (параметр -d).В процессе реструктуризации сервер 1С активно создает временные файлы. Рассмотрим, какие папки стоит проверить и очистить:
C:\Windows\Temp. Здесь часто скапливаются остатки неудачных обновлений или временные файлы служб.C:\Users\[Имя_Пользователя_Службы]\AppData\Local\Temp. Важно чистить именно профиль того пользователя, под которым запущена служба 1C и SQL.srvinfo (например, snccntx). Очистку этих папок рекомендуется производить только при полностью остановленной службе сервера 1С.Проанализируем работу операционной системы. Процедура ТиИ требует больших объемов оперативной памяти для сортировки данных. Если физической памяти (RAM) недостаточно, Windows начинает активно использовать файл подкачки.
Посмотрим на настройки:
pagefile.sys на десятки гигабайт.C: на более свободный накопитель.Мы выяснили, что нехватка места после ТиИ — это не случайность, а следствие интенсивной работы с данными. Чтобы ситуация не повторилась, разберем основные правила настройки сервера 1С + SQL:
C: должен быть зарезервирован только под нужды ОС.Simple для баз 1С, если у вас нет настроенного плана обслуживания с бэкапами логов.Shrink для лог-файлов, если они неоправданно разрослись.Следуя этим шагам, мы не только освободим место прямо сейчас, но и обеспечим стабильную и бесперебойную работу системы в будущем.