Как изменить папку временных файлов при загрузке большой базы .dt через SQL?

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

При работе с крупными информационными базами 1С:Предприятие администраторы часто сталкиваются с проблемой нехватки места на системном диске C:. Типичная ситуация: вы запускаете загрузку базы из файла .dt объемом в несколько сотен гигабайт, указываете путь к базе данных на диске D:, но в процессе загрузки обнаруживаете, что свободное место на диске C: стремительно исчезает. Это происходит из-за того, что система использует временные каталоги для распаковки данных и промежуточных операций SQL-сервера.

В этой статье мы подробно разберем, как перенаправить потоки временных данных на другой диск и какие настройки MSSQL необходимо изменить, чтобы успешно загрузить базу объемом 200–300 ГБ и более.

1. Настройка переменных окружения Windows

Первое, на что стоит обратить внимание, — это стандартные переменные временных файлов в операционной системе. Разберем по шагам, как их изменить:

  1. Откройте «Свойства системы» (нажмите Win + Pause/Break или через Панель управления).
  2. Перейдите в раздел «Дополнительные параметры системы».
  3. Нажмите кнопку «Переменные среды».
  4. Найдите переменные TEMP и TMP как в секции пользователя, так и в секции системных переменных.
  5. Измените их значения на путь к папке на диске с достаточным объемом свободного места (например, D:\TEMP).

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

2. Перенос рабочего каталога службы сервера 1С

Многие забывают, что сервер 1С:Предприятия (процесс ragent.exe) чаще всего запущен от имени специальной учетной записи (например, USR1CV8). Процесс распаковки .dt происходит именно в профиле этого пользователя.

Проанализируем ситуацию: если база весит 215 ГБ, то при распаковке архива 1С сначала создает временные файлы собственного формата во временной папке Windows. Чтобы перенести эти данные, мы можем изменить параметры запуска службы в реестре:

  1. Запустите редактор реестра regedit.
  2. Найдите ветку службы 1С (обычно это HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent).
  3. В параметре 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:.

3. Настройка системной базы tempdb в MSSQL

Даже если основные файлы базы данных (.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, чтобы изменения вступили в силу.

4. Выбор модели восстановления (Recovery Model)

Выясним причину, по которой файл лога транзакций может раздуваться до невероятных размеров. При загрузке данных в режиме Full (Полная) модель восстановления записывает каждое действие в лог .ldf. Если вы загружаете 215 ГБ данных, файл лога может превысить этот объем, забив все дисковое пространство.

Для ускорения загрузки и экономии места обязательно установите Simple (Простая) модель восстановления:

  1. В SSMS нажмите правой кнопкой на нужную базу данных.
  2. Выберите «Свойства» (Properties) -> «Параметры» (Options).
  3. В поле «Модель восстановления» выберите Simple.
  4. Нажмите ОК.

Это позволит SQL Server повторно использовать пространство внутри файла лога, не увеличивая его размер до бесконечности.

5. Оптимизация работы с дисковой подсистемой

Если вы используете внешний жесткий диск (например, через USB), скорость загрузки будет значительно ниже, чем на внутренних SSD/HDD. Рассмотрим, как можно ускорить процесс:

Итоги

Загрузка большой базы данных — это комплексный процесс, задействующий ресурсы как платформы 1С, так и СУБД. Настроим систему правильно: перенесем переменные TEMP, настроим рабочий каталог службы через реестр, переместим tempdb и установим простую модель восстановления. Это гарантирует, что диск C: останется свободным, а база данных будет успешно развернута.

← На главную