Как перенести каталог временных файлов сервера 1С на другой диск при загрузке базы из dt?

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

При развертывании информационной базы 1С:Предприятия из файла выгрузки .dt в клиент-серверном варианте (MS SQL Server или PostgreSQL) системные администраторы часто сталкиваются с ситуацией, когда системный диск C: моментально переполняется временными файлами. Даже если в настройках СУБД базы данных и системная база tempdb перенесены на отдельный диск (например, D:), распаковка файла выгрузки все равно приводит к исчерпанию свободного места на диске C:. Разберем подробно, почему это происходит и как правильно перенаправить временные каталоги на другой накопитель.

Выясним причину такого поведения платформы. В клиент-серверном режиме выгрузка и загрузка данных из .dt выполняется не клиентским приложением и не самой СУБД, а рабочим процессом кластера серверов 1С — rphost. Так как файл .dt использует сильное сжатие, при распаковке объем генерируемых временных данных может в несколько раз превышать размер исходного файла. Все эти промежуточные данные рабочий процесс записывает в каталог временных файлов той учетной записи, от имени которой запущена служба сервера 1С.

Рассмотрим, где по умолчанию располагаются временные файлы в зависимости от типа запуска службы:

  1. Служба запущена от имени Local System (Локальная система): в этом случае процесс использует глобальные системные переменные среды TEMP и TMP, которые по умолчанию ведут в папку C:\Windows\Temp или C:\Temp. Изменение переменных в профиле текущего администратора на эту службу никак не влияет.
  2. Служба запущена от имени выделенного пользователя (например, USR1CV8): временные файлы формируются в профиле данного пользователя по пути C:\Users\USR1CV8\AppData\Local\Temp.

Проанализируем доступные способы решения этой задачи и переноса временных файлов на свободный диск.

Способ 1. Настройка системных переменных среды Windows

Если служба агента сервера 1С работает под учетной записью Local System, необходимо изменить именно системные переменные окружения, а не пользовательские.

Разберем по шагам:

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

Способ 2. Настройка переменных для выделенной учетной записи (USR1CV8)

Если служба запускается от имени специального пользователя, системные переменные на него не повлияют. Перенаправим каталоги для конкретного пользователя службы:

  1. Выполним вход в Windows под учетной записью службы (например, USR1CV8) или запустим редактор реестра от ее имени.
  2. В окне «Переменные среды» в верхней секции «Пользовательские переменные» изменим значения TEMP и TMP, направив их в каталог на диске D: (например, D:\Temp\USR1CV8).
  3. Предоставим учетной записи службы полные права (Full Control) на созданную директорию на диске D:, чтобы избежать ошибок доступа при создании файлов.
  4. Перезапустим службу сервера 1С.

Способ 3. Использование символических ссылок NTFS (Junction Point)

Если переопределение переменных среды нежелательно или заблокировано корпоративными политиками безопасности, можно применить механизм связывания каталогов на уровне файловой системы:

  1. Остановим службу «Агент сервера 1С:Предприятия» через оснастку services.msc.
  2. Очистим или удалим текущую папку временных файлов службы (например, C:\Users\USR1CV8\AppData\Local\Temp или C:\Windows\Temp).
  3. Создадим каталог на целевом диске: D:\Temp1C и назначим права для учетной записи службы.
  4. Запустим командную строку (cmd) от имени администратора и создадим соединение каталогов с помощью команды mklink:

mklink /J "C:\Users\USR1CV8\AppData\Local\Temp" "D:\Temp1C"

После создания связи операционная система будет автоматически и прозрачно перенаправлять все операции записи из стандартного пути на диск D:. Запустим службу сервера 1С и повторим загрузку базы.

Рекомендации по переносу больших баз данных

Рассмотрим важные ограничения формата .dt. Разработчики платформы 1С позиционируют выгрузку в .dt исключительно как инструмент для переноса небольших информационных баз между различными типами СУБД или перехода с файлового режима в клиент-серверный.

Для регулярного резервного копирования и развертывания баз среднего и крупного объема (от десятков гигабайт) рекомендуется использовать штатные средства СУБД:

  1. Создание и восстановление резервных копий средствами MS SQL Server (файлы .bak). При таком подходе процесс выполняется самой СУБД на целевом диске и не нагружает процесс rphost временными файлами.
  2. Если исходная база доступна только в формате .dt, можно сначала загрузить ее в локальную файловую базу на диске D:, после чего перенести конфигурацию и данные в рабочую SQL-базу.
← На главную