Типовая конфигурация сервера для 1С:Предприятия и Microsoft SQL Server нередко предусматривает разделение дискового пространства на два накопителя: системный том C: (на котором развернуты операционная система Windows Server, исполняемые файлы СУБД и серверной платформы 1С) и выделенный том D: (предназначенный для хранения файлов рабочих баз данных). При создании базы в консоли администрирования 1С и в среде SQL Server ее основные файлы данных (.mdf) и журнала транзакций (.ldf) корректно размещаются на диске D:. Однако при выполнении стандартной операции «Загрузить информационную базу...» из файла выгрузки .dt через конфигуратор свободное место на диске C: начинает стремительно сокращаться, вплоть до полного исчерпания и аварийной остановки процесса с ошибками ввода-вывода или нехватки памяти.
Причина такого поведения заключается в архитектуре механизма загрузки данных формата .dt: это не прямое бинарное восстановление базы, а платформенная распаковка и последовательная вставка табличных данных через прикладной уровень. В процессе задействуются сразу несколько компонентов инфраструктуры, которые по умолчанию настроены на работу в системном каталоге Windows.
В момент загрузки выгрузки .dt параллельно работают четыре механизма, расходующие пространство системного диска:
tempdb при установке SQL Server по умолчанию создается в подкаталоге экземпляра на системном диске. Даже при простой модели восстановления (SIMPLE) ее файлы данных и журнал транзакций могут многократно раздуваться вплоть до сотен гигабайт.ragent, rmngr, rphost) используют рабочую директорию кластера для хранения настроек, временных данных сеансов и журнала регистрации. По умолчанию каталог располагается по пути C:\Program Files\1cv8\srvinfo..dt представляет собой сжатый архив. При его развертывании платформа распаковывает промежуточные потоки данных во временную директорию профиля пользователя, запустившего конфигуратор, либо в каталог системной учетной записи службы сервера 1С (обычно C:\Users\usr1cv8\AppData\Local\Temp или C:\Windows\Temp).rphost) могут вызывать пиковое потребление оперативной памяти, в результате чего Windows динамически расширяет файл подкачки на системном разделе.Перед внесением изменений в конфигурацию сервера необходимо определить, какая именно подсистема утилизирует объем диска. Для этого во время запуска процедуры загрузки базы выполняется экспресс-мониторинг:
sqlservr.exe, rphost.exe или 1cv8.exe.tempdb. В среде SQL Server Management Studio (SSMS) выполняется запрос:
SELECT name, physical_name AS CurrentLocation, (size * 8 / 1024) AS SizeMB
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
C:\Program Files\1cv8\srvinfo и C:\Users\usr1cv8\AppData\Local\Temp.C:\pagefile.sys.В большинстве случаев главным потребителем десятков гигабайт становится база tempdb. В отличие от пользовательских баз, перенос tempdb не требует отсоединения или копирования файлов, так как она пересоздается заново при каждом перезапуске службы SQL Server.
Для переноса всех файлов (основного, дополнительных файлов данных и журнала транзакций) на диск D: выполняется следующий порядок действий:
D:\MSSQL\TempDB. Службе SQL Server (учетной записи, от имени которой она запущена) предоставляются полные права доступа (NTFS) на эту папку.
USE master;
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'D:\MSSQL\TempDB\tempdev.mdf');
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'D:\MSSQL\TempDB\templog.ldf');
GO
Если в экземпляре SQL Server настроено несколько файлов данных tempdb (по числу ядер процессора: temp2, temp3 и далее), для каждого из них выполняется аналогичная инструкция с указанием соответствующего логического имени и нового пути к файлу с расширением .ndf.
tempdb можно применить генератор скрипта:
SELECT 'ALTER DATABASE tempdb MODIFY FILE (NAME = [' + name + '], FILENAME = ''D:\MSSQL\TempDB\' + name + CASE WHEN type = 0 THEN '.mdf' ELSE '.ldf' END + ''');'
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
tempdb в новом каталоге на диске D:.tempdb на диске C: удаляются вручную после подтверждения успешного старта службы.Ограничения: учетная запись службы SQL Server обязательно должна иметь разрешение на чтение и запись в целевой каталог, а также privilege «Выполнение задач по обслуживанию томов» (Perform Volume Maintenance Tasks) для мгновенной инициализации файлов данных без задержек.
Если в процессе загрузки переполняется подкаталог srvinfo, содержащий кэш конфигураций и временные файлы сеансов, требуется изменить параметры запуска службы агента сервера 1С.
services.msc).regedit и выполняется переход в ветку:
HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64) (или соответствующую 32-разрядной версии).
ImagePath находится ключ -d, задающий рабочий каталог. Значение по умолчанию -d "C:\Program Files\1cv8\srvinfo" заменяется на путь к новому каталогу на диске D:, например -d "D:\1C\srvinfo".srvinfo физически копируется в новый каталог D:\1C\srvinfo с сохранением структуры подпапок.USR1CV8).Важное ограничение: при установке обновления платформы 1С:Предприятие инсталлятор заново регистрирует службу агента кластера в реестре, сбрасывая параметр -d на системный диск. После каждого обновления платформы необходимо повторно проверять и корректировать параметр ImagePath.
Распаковка содержимого выгрузки .dt выполняется во временную папку. Если процедура выполняется на стороне сервера учетной записью USR1CV8, место расходуется в ее профиле. Если загрузка выполняется локальным клиентом конфигуратора, задействуется профиль текущего администратора.
Наиболее надежный способ исключить обращение к диску C: без перенастройки системных профилей Windows — использование символических связей каталогов файловой системы NTFS (Junction Points):
D:\Temp\1C_usr1cv8, и предоставляются права учетной записи USR1CV8.C:\Users\usr1cv8\AppData\Local\Temp.mklink /D "C:\Users\usr1cv8\AppData\Local\Temp" "D:\Temp\1C_usr1cv8"
При необходимости аналогичная ссылка создается для глобальных системных каталогов C:\Temp или переменной %TEMP% учетной записи администратора, выполняющего операцию загрузки через конфигуратор.
Если оперативная память сервера загружена полностью, диспетчер памяти Windows выделяет дополнительное пространство в файле pagefile.sys. Если файл подкачки настроен на автоматический выбор размера на диске C:, он может занять все оставшееся место.
Win + R и командой systempropertiesadvanced.Механизм выгрузки и загрузки базы данных средствами платформы (формат .dt) проектировался разработчиками 1С исключительно для целей резервного копирования небольших информационных баз файлового типа или для миграции между различными СУБД (например, при переходе с Microsoft SQL Server на PostgreSQL).
Использование .dt для регулярного обслуживания или восстановления продуктивных клиент-серверных баз среднего и крупного размера не рекомендуется по следующим причинам:
.dt полностью перестраивает таблицы, что создает максимальную нагрузку на дисковые подсистемы, процессор и базу tempdb..dt не обеспечивает транзакционную целостность при наличии активных блокировок.Для штатного развертывания и восстановления баз на MS SQL Server следует использовать встроенные средства СУБД — создание резервной копии в файл .bak и восстановление командой RESTORE DATABASE с указанием явных путей размещения файлов данных и лога исключительно на диске D:. Это полностью исключает участие временных каталогов 1С и минимизирует паразитное разрастание системной базы tempdb.