Перемещение информационных баз 1С:Предприятие на другой физический носитель — это стандартная процедура администрирования, необходимая при расширении дискового пространства или модернизации серверной инфраструктуры. Часто системный диск заполняется логами или архивами, и единственный выход — перенести тяжелые файлы данных .mdf и журналов .ldf на более емкий или быстрый RAID-массив. Процесс требует остановки служб и аккуратной работы с путями в конфигурации СУБД.

Ошибки на этапе выполнения могут привести к тому, что сервер SQL Server просто не запустится или клиенты 1С потеряют соединение с базами. Критически важно понимать разницу между отсоединением базы данных и простым копированием файлов. Механическое перемещение файлов без предварительного отсоединения (Detach) в диспетчере СУБД гарантированно приведет к повреждению структуры данных и невозможности дальнейшего запуска системы.

В данной статье мы рассмотрим корректный алгоритм действий для платформ MS SQL Server и PostgreSQL, так как подходы к ним существенно различаются. Мы уделим внимание не только технической стороне переноса, но и вопросам оптимизации производительности после смены расположения файлов на диске.

Подготовка окружения и резервное копирование

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

Убедитесь, что на целевом диске достаточно свободного места. Размер файлов данных может превышать сотни гигабайт, особенно если в базе хранится история за несколько лет. Также проверьте права доступа: учетная запись, от имени которой работает служба SQL Server (MSSQLSERVER), должна иметь полные права на чтение и запись в новую папку.

⚠️ Внимание: Никогда не пытайтесь перемещать файлы базы данных, пока служба SQL Server активна. Это приведет к блокировке файлов операционной системой и потенциальной потере данных.

Для выполнения работ вам потребуются права локального администратора на сервере. Если сервер находится в домене, убедитесь, что доменный администратор также имеет доступ к новому ресурсу. Проверьте состояние дисковой подсистемы: новый диск должен быть отформатирован в файловую систему NTFS с размером кластера, рекомендованным для баз данных (обычно 64 Кб для оптимальной производительности).

☑️ Подготовка к миграции

Выполнено: 0 / 4

Перенос базы в среде MS SQL Server

Наиболее распространенный сценарий работы с 1С предполагает использование MS SQL Server. Процедура переноса здесь выполняется через среду управления SQL Server Management Studio (SSMS). Сначала необходимо определить точное расположение текущих файлов. Для этого подключитесь к экземпляру сервера, найдите нужную базу в списке, нажмите правой кнопкой мыши и выберите Свойства (Properties).

В окне свойств перейдите на вкладку Файлы (Files). Здесь вы увидите логические имена файлов и их физические пути на диске. Запишите эти пути или сделайте скриншот, чтобы в случае ошибки можно было вернуть все как было. После фиксации информации базу данных необходимо отсоединить. Нажмите правой кнопкой мыши на базу, выберите Задачи (Tasks) -> Отсоединить (Detach).

Важно отметить галочку Удалить подключения (Drop Connections), чтобы принудительно разорвать сеансы пользователей, которые могли остаться активными. После подтверждения операции база исчезнет из списка доступных в SSMS, но файлы останутся на диске. Теперь вы можете безопасно переместить файлы .mdf и .ldf в новую директорию через проводник Windows или командную строку.

Что делать, если отсоединение не удается?

Если система пишет, что база используется, выполните команду в новом запросе: ALTER DATABASE [ИмяБазы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE. Это принудительно завершит все транзакции и освободит файлы.

После перемещения файлов вернитесь в SSMS. Нажмите правой кнопкой мыши на узел Базы данных и выберите Присоединить (Attach). В открывшемся окне нажмите Добавить и укажите путь к новому расположению файла .mdf. Система автоматически подтянет путь к файлу журнала, но если он изменился, его нужно поправить вручную в нижней части окна. Нажмите OK для завершения присоединения.

Особенности миграции в PostgreSQL

Работа с PostgreSQL, который часто используется в современных версиях 1С, имеет свою специфику. Здесь нет понятия "отсоединить базу" в том же виде, что в MS SQL. Файлы данных хранятся в каталоге data, а пути к кластеру прописаны в конфигурационных файлах или реестре в зависимости от способа установки.

Самый надежный способ переноса — использование утилиты pg_dump и pg_restore. Сначала сделайте дамп базы: pg_dump -U postgres -f backup_file.backup имя_базы. Затем остановите службу PostgreSQL через оснастку services.msc. Переместите весь каталог data на новый диск.

Далее необходимо сообщить службе о новом расположении данных. Это делается через реестр Windows или параметры запуска службы. Найдите ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\postgresql-x64-13 (номер версии может отличаться) и измените параметр ImagePath, указав новый путь к исполняемому файлу с флагом -D, указывающим на новую директорию данных.

⚠️ Внимание: При переносе PostgreSQL критически важно сохранить структуру папок внутри каталога data. Изменение вложенности папок с идентификаторами баз данных (OID) приведет к полной неработоспособности кластера.

Альтернативный метод — создание символической ссылки (symlink), если вы не хотите менять настройки службы. Команда mklink /J позволяет создать псевдо-каталог в старом месте, который будет перенаправлять все обращения к новому диску. Это быстрый способ, но он менее надежен при сбоях файловой системы.

📊 Какая СУБД используется у вас чаще всего?
MS SQL Server
PostgreSQL
Oracle
DB2

Перепривязка баз в консоли управления 1С

После того как файлы перемещены и служба СУБД запущена, необходимо убедиться, что сервер 1С видит базы корректно. Обычно при использовании метода Attach/Detach в SQL Server имена баз и их идентификаторы сохраняются, поэтому перепривязка в консоли администрирования 1С:Предприятия может не потребоваться.

Однако, если вы меняли имя базы в процессе восстановления или использовали метод резервного копирования и восстановления (Restore) вместо присоединения, в списке баз 1С может появиться запись с пометкой "недоступна" или новая база с другим именем. Зайдите в консоль администрирования сервера 1С, раскройте ветку Информационные базы.

Если база отображается некорректно, удалите старую ссылку (не удаляя физическую базу в SQL!) и добавьте новую. При создании укажите тип СУБД MS SQL Server, имя сервера и новое имя базы данных, которое вы задали при восстановлении. Проверьте права доступа пользователя 1С к этой базе в самом SQL Server.

Действие MS SQL Server PostgreSQL Риск ошибки
Остановка службы Обязательно перед копированием Обязательно перед копированием Высокий
Метод переноса Detach / Attach pg_dump / pg_restore Средний
Изменение путей Автоматически в SSMS В реестре или конфигах Высокий
Проверка целостности DBCC CHECKDB pg_catalog проверки Низкий

Оптимизация производительности после переноса

Перенос базы на новый диск — отличный повод провести профилактику производительности. Файлы журналов транзакций (.ldf) и файлы данных (.mdf) работают по-разному. Журналы пишутся последовательно, а данные — хаотично. Если ваш новый дисковый массив состоит из нескольких физических дисков, идеальным вариантом будет разнести эти файлы по разным томам.

Для этого в свойствах базы данных в SSMS добавьте новый файл журнала или данных, указав путь на другой диск, а старый файл можно удалить после переноса данных. Это снизит конкуренцию за ресурсы головки диска (или контроллера SSD) и ускорит обработку транзакций в 1С, особенно в моменты проведения документов.

💡

Размещение файлов .ldf на отдельном физическом диске от файлов .mdf может увеличить скорость проведения документов в 1С до 20-30% при высокой нагрузке.

Также проверьте настройки автоувеличения файлов. Убедитесь, что шаг прироста (Filegrowth) установлен в фиксированном размере (например, 512 Мб или 1 Гб), а не в процентах. Рост в процентах на больших базах приводит к фрагментации и длительным блокировкам во время увеличения файла, что вызывает "тормоза" у пользователей.

После переноса выполните команду DBCC CHECKDB для проверки логической и физической целостности базы. Это займет время, но гарантирует, что при перемещении терабайтов данных ни один бит не был поврежден. Если ошибок нет, можно смело открывать доступ пользователям.

Типичные ошибки и способы их устранения

Одной из частых проблем после переноса является ошибка "Вход в систему не удался" или "База данных недоступна". Часто это связано с тем, что при переносе сменился владелец базы данных или пользователь dbo потерял связь с логином SQL. Для исправления выполните скрипт: ALTER AUTHORIZATION ON DATABASE::[ИмяБазы] TO [sa]; или назначьте владельца через интерфейс SSMS.

Другая распространенная ситуация — служба SQL Server не стартует после переноса системных баз или изменения путей в реестре. В логах событий Windows (Event Viewer) в разделе Application будет указана конкретная причина, например, "Не удалось найти указанный файл". Внимательно проверьте права NTFS на новую папку: группа SQLServerMSSQLUser$ должна иметь полный доступ.

⚠️ Внимание: Если вы используете кластеризованный сервер 1С или отказоустойчивый кластер SQL, перенос файлов требует дополнительных шагов по обновлению ресурсов кластера. Простое копирование файлов на узлах нарушит синхронизацию.

Иногда пользователи жалуются на медленную работу сразу после переноса. Это может быть связано с тем, что кэш планов запросов сбросился, и серверу нужно время на их перекомпиляцию. Также проверьте, не оказался ли новый диск в режиме энергосбережения, который замедляет отклик.

💡

Всегда выполняйте проверку целостности базы (DBCC CHECKDB) сразу после переноса файлов, прежде чем открывать доступ пользователям.

Можно ли переносить базу 1С просто копированием файлов в проводнике?

Нет, это категорически запрещено. Файлы базы данных заблокированы службой SQL Server. Копирование "на горячую" приведет к созданию битой копии, которую невозможно будет присоединить. Необходимо использовать штатные средства отсоединения (Detach) или резервного копирования.

Нужно ли менять настройки в файле servers.cfg при переносе базы?

Файл servers.cfg хранит список информационных баз для тонкого клиента. Если имя базы данных в СУБД не менялось, править этот файл не нужно. Если вы создали базу с новым именем при восстановлении, тогда потребуется добавить новую строку в servers.cfg или пересоздать ярлык запуска.

Сколько времени занимает перенос базы объемом 500 Гб?

Время зависит от скорости дисковой подсистемы (IOPS) и интерфейса подключения (SATA, SAS, NVMe). При использовании SSD перенос может занять 10-20 минут. На классических HDD этот процесс может растянуться на несколько часов. Планируйте работы на нерабочее время.

Что делать, если после переноса 1С выдает ошибку "Лицензия не найдена"?

Ошибка обычно не связана с переносом файлов базы, но если менялось имя сервера или его сетевой идентификатор, лицензионный сервер мог потерять связь. Проверьте службу лицензирования 1С и убедитесь, что ключ защиты (USB или программный) доступен системе и служба видит сетевой адрес сервера.