Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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

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 это не восстановит.