Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL_ERR_5171 1С:Предприятие и СУБД

MSSQL Ошибка 5171: File is not a primary database file — Решение

Обновлено: 25.08.2026 · Официальная документация ↗
  • Сообщение: Msg 5171, Level 16, State 1: 'D:\Data\Base1C.mdf' is not a primary database file.
  • База данных не монтируется при выполнении команды ATTACH или старте службы.
  • Повреждение нулевой страницы файла данных (Page 0 — File Header Page).
  • Попытка примонтировать вторичный файл данных .ndf или лог .ldf в качестве основного файла .mdf.

1. Проверка порядка и типов файлов при монтировании

Убедитесь, что первым файлом в списке монтирования указан именно первичный файл данных (.mdf), а не вторичные файлы (.ndf) или журнал транзакций (.ldf):

CREATE DATABASE [Base1C] ON 
( FILENAME = N'D:\Data\Base1C.mdf' ),      -- PRIMARY FILE
( FILENAME = N'D:\Data\Base1C_1.ndf' ),    -- SECONDARY FILE
( FILENAME = N'D:\Log\Base1C_log.ldf' )    -- LOG FILE
FOR ATTACH;
GO

2. Анализ состояния нулевой страницы заголовка (Page 0)

Если порядок верен, но SQL Server выдает 5171, значит поврежден заголовок файла (первые 8 КБ). Проверьте заголовок с помощью DBCC PAGE:

DBCC TRACEON (3604);
-- Дамп страницы 0 файла 1
DBCC PAGE ('Base1C', 1, 0, 3);
GO

3. Восстановление из бэкапа

При физическом повреждении нулевой страницы штатное восстановление через sp_attach_db невозможно. Разверните последний валидный бэкап:

RESTORE DATABASE [Base1C] 
FROM DISK = N'D:\Backup\Base1C_Full.bak' 
WITH NORECOVERY;

RESTORE LOG [Base1C] 
FROM DISK = N'D:\Backup\Base1C_Log.trn' 
WITH RECOVERY;
GO

4. Аварийное извлечение через создание фиктивной базы (Hack Attach)

Если бэкапов нет, создайте новую чистую базу с точно такой же структурой файлов, остановите SQL Server, подмените MDF-файл и переведите сервер в режим EMERGENCY для запуска DBCC CHECKDB.

💡 Практика специалистов: Для защиты от повреждения заголовков файлов данных баз 1С всегда форматируйте диски под базы данных в файловую систему NTFS с размером кластера 64 КБ (Allocation Unit Size) и включайте опцию PAGE_VERIFY CHECKSUM в свойствах базы данных.

Частые вопросы (FAQ)

Почему повреждается именно нулевая страница файла данных?

Нулевая страница (File Header) перезаписывается при операциях расширения файла, контрольных точках и смене параметров. При внезапном сбое питания дисковый контроллер может повредить именно этот сектор.

Можно ли исправить ошибку 5171 через DBCC CHECKDB?

Нет, если база не монтируется (ATTACH fails), DBCC CHECKDB запустить невозможно, так как движок СУБД не может определить внутреннюю топологию и структуру страниц файла.

Чем отличается файл .mdf от .ndf?

MDF содержит системные каталоги, метаданные и загрузочные структуры базы. NDF — это дополнительные файлы вторичных файловых групп, не содержащие первичного загрузочного заголовка базы.

Поможет ли утилита chkdsk при ошибке 5171?

Chkdsk может восстановить целостность файловой системы NTFS, но если содержимое страницы внутри файла затерто нулями, логическую структуру заголовка SQL Server это не восстановит.

Полезные материалы
Рекомендуем