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

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

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

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

MSSQL Error 3169: Database backed up on newer version — Даунгрейд версий

Обновлено: 25.08.2026 · Официальная документация ↗

Ошибка 3169 возникает при попытке восстановить резервную копию (или подключить файлы MDF/LDF через Attach), созданную на более новой версии SQL Server (с более высокой внутренней версией формата базы), на сервере с более старой версией СУБД.

  • Сообщение: The database was backed up on a server running version %ls. That version is incompatible with this server, which is running version %ls. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server (Severity 16).
  • Невозможность развернуть бэкап из SQL Server 2022 на SQL Server 2019 или 2016.
  • Прямой запрет ядра СУБД на обратное понижение версии физического формата БД (Downgrade).

1. Таблица соответствия версий SQL Server и номеров внутреннего формата БД

Маркетинговая версияВерсия продуктаВнутренняя версия формата БД
SQL Server 202216.0.x957
SQL Server 201915.0.x904
SQL Server 201714.0.x869
SQL Server 201613.0.x852
SQL Server 201412.0.x782

2. Почему RESTORE невозможен на младшей версии?

Внутренние физические структуры страниц данных, форматы метаданных и структуры журналов транзакций постоянно дорабатываются. SQL Server поддерживает автоматический апгрейд структуры «снизу вверх», но прямой даунгрейд «сверху вниз» через RESTORE или ATTACH физически невозможен в архитектуре MSSQL.

3. Способы переноса данных на младшую версию для 1С:Предприятие

Способ А: Выгрузка/Загрузка через файл .DT (Рекомендуемый для 1С)

  1. Откройте исходную базу на старшей версии SQL Server в режиме 1С:Предприятие Конфигуратор.
  2. Выберите пункт меню: Администрирование -> Выгрузить информационную базу... (создается файл .dt).
  3. Создайте чистую пустую базу данных на целевом младшем SQL Server.
  4. В Конфигураторе целевой базы выберите: Администрирование -> Загрузить информационную базу....

Способ Б: Экспорт через BACPAC / Data Tier Application

Для баз без 1С используйте экспорт схемы и данных через утилиту sqlpackage:

# 1. Экспорт с нового сервера
sqlpackage /Action:Export /SourceServerName:SQL2022 /SourceDatabaseName:SourceDB /TargetFile:C:\DB.bacpac

# 2. Импорт на старый сервер
sqlpackage /Action:Import /TargetServerName:SQL2016 /TargetDatabaseName:TargetDB /SourceFile:C:\DB.bacpac
💡 Практика специалистов: Для больших баз данных 1С (от 500GB+), где выгрузка в .DT файл падает по памяти, для даунгрейда используйте перенос данных через планы обмена 1С (XML) или генерацию скриптов миграции таблиц через BCP.

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

Поможет ли изменение Compatibility Level на уровень 130 для бэкапа на SQL 2016?

Нет. Compatibility Level изменяет только поведение оптимизатора запросов и синтаксис T-SQL. Физический формат хранения страниц и заголовков бэкапа всегда соответствует версии экземпляра СУБД, где выполнялся бэкап.

Можно ли выполнить Attach MDF-файла с версии 2019 на версию 2016?

Нет. Команда CREATE DATABASE ... FOR ATTACH завершится той же ошибкой несовместимости формата файлов (Database version 904 cannot be opened on server version 852).

Теряются ли данные при переносе информационной базы 1С через .DT файл?

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

Как узнать версию SQL Server, на котором был создан бэкап?

Выполните команду: RESTORE HEADERONLY FROM DISK = 'путь_к_бэкапу'. Колонка DatabaseVersion покажет внутренний номер версии (например, 904 = SQL 2019).

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