При работе с крупными информационными базами 1С:Предприятие администраторы часто сталкиваются с проблемой нехватки места на системном диске C:. Типичная ситуация: вы запускаете загрузку базы из файла .dt объемом в несколько сотен гигабайт, указываете путь к базе данных на диске D:, но в процессе загрузки обнаруживаете, что свободное место на диске C: стремительно исчезает. Это происходит из-за того, что система использует временные каталоги для распаковки данных и промежуточных операций SQL-сервера.
В этой статье мы подробно разберем, как перенаправить потоки временных данных на другой диск и какие настройки MSSQL необходимо изменить, чтобы успешно загрузить базу объемом 200–300 ГБ и более.
Первое, на что стоит обратить внимание, — это стандартные переменные временных файлов в операционной системе. Разберем по шагам, как их изменить:
Win + Pause/Break или через Панель управления).TEMP и TMP как в секции пользователя, так и в секции системных переменных.D:\TEMP).Важно: Если вы работаете в клиент-серверном варианте, изменения пользовательских переменных под вашей учетной записью могут не затронуть службу 1С. Рассмотрим это подробнее в следующем пункте.
Многие забывают, что сервер 1С:Предприятия (процесс ragent.exe) чаще всего запущен от имени специальной учетной записи (например, USR1CV8). Процесс распаковки .dt происходит именно в профиле этого пользователя.
Проанализируем ситуацию: если база весит 215 ГБ, то при распаковке архива 1С сначала создает временные файлы собственного формата во временной папке Windows. Чтобы перенести эти данные, мы можем изменить параметры запуска службы в реестре:
regedit.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent).ImagePath добавьте ключ -d и укажите новый путь к рабочему каталогу.Пример строки запуска:
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1C_Work_Dir"
После этого необходимо перезапустить службу сервера 1С. Теперь все временные данные при загрузке будут создаваться на диске D:.
Даже если основные файлы базы данных (.mdf) и логов (.ldf) настроены на размещение на диске D:, MSSQL активно использует системную базу tempdb. Она служит для хранения временных таблиц, сортировок и построения индексов, что критично при загрузке данных из .dt.
По умолчанию tempdb находится на диске C:. Разберем, как ее переместить с помощью SQL-запроса в SQL Server Management Studio (SSMS):
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\SQLTemp\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'D:\SQLTemp\templog.ldf');
GO
После выполнения этого скрипта необходимо перезапустить службу SQL Server, чтобы изменения вступили в силу.
Выясним причину, по которой файл лога транзакций может раздуваться до невероятных размеров. При загрузке данных в режиме Full (Полная) модель восстановления записывает каждое действие в лог .ldf. Если вы загружаете 215 ГБ данных, файл лога может превысить этот объем, забив все дисковое пространство.
Для ускорения загрузки и экономии места обязательно установите Simple (Простая) модель восстановления:
Это позволит SQL Server повторно использовать пространство внутри файла лога, не увеличивая его размер до бесконечности.
Если вы используете внешний жесткий диск (например, через USB), скорость загрузки будет значительно ниже, чем на внутренних SSD/HDD. Рассмотрим, как можно ускорить процесс:
sqlservr.exe в исключения антивируса. Постоянная проверка записываемых гигабайтов данных может замедлить процесс в несколько раз..mdf) на один физический диск, а файл лога (.ldf) — на другой. В случае с внешним USB-диском это критично, так как одновременная запись в два файла создает очередь запросов к головкам диска.Загрузка большой базы данных — это комплексный процесс, задействующий ресурсы как платформы 1С, так и СУБД. Настроим систему правильно: перенесем переменные TEMP, настроим рабочий каталог службы через реестр, переместим tempdb и установим простую модель восстановления. Это гарантирует, что диск C: останется свободным, а база данных будет успешно развернута.