Как восстановить SQL-базу 1С 7.7 из резервной копии, если утерян файл 1Cv7.dds?

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

При администрировании и восстановлении устаревших, но все еще активно используемых систем на платформе 1С:Предприятие 7.7 в связке с MS SQL Server, технические специалисты часто сталкиваются со следующей проблемой. Имеется работоспособный бэкап базы данных SQL (файл с расширением .bak) и актуальный файл метаданных конфигурации 1Cv7.md. Однако файл словаря данных 1Cv7.dds, который находился в рабочем каталоге базы данных на момент создания архивной копии, утерян или поврежден. При попытке запустить систему после восстановления бэкапа программа выдает ошибку открытия базы данных.

В этой статье мы подробно разберем, почему возникает эта проблема, как функционирует словарь данных в SQL-версии платформы 1С 7.7, и пошагово рассмотрим наиболее эффективные методы восстановления работоспособности базы данных без оригинального файла 1Cv7.dds. Мы также изучим сопутствующие нюансы, такие как восстановление файла параметров подключения 1Cv7.dba, проблемы совместимости с современными версиями MS SQL Server и аварийные способы спасения данных.

---

Почему регенерация DDS-файла вообще работает?

Для понимания сути решения проанализируем архитектуру хранения данных в SQL-версии 1С 7.7. Файл 1Cv7.dds (Data Dictionary SQL) представляет собой текстовый словарь данных. Он связывает внутренние логические объекты метаданных 1С (такие как справочники, документы, регистры, реквизиты) с их физическим представлением — таблицами и полями на сервере MS SQL Server.

Например, справочнику "Контрагенты" в SQL-базе может соответствовать таблица SC142, а его реквизиту "ИНН" — поле SP145. Эти числовые идентификаторы (в данном примере — 142 и 145) жестко зашиты внутри файла конфигурации 1Cv7.md и генерируются платформой в момент создания объектов разработчиком.

Если у нас имеется абсолютно идентичный файл конфигурации 1Cv7.md (созданный в ту же секунду, что и восстанавливаемый SQL-бэкап, либо не менявшийся с тех пор), структура связей внутри него полностью совпадает со структурой таблиц на SQL-сервере. Это означает, что мы можем принудительно заставить Конфигуратор пересоздать файл 1Cv7.dds с нуля. Новый файл словаря будет на 100% соответствовать реальной структуре таблиц в восстановленной базе данных. Платформа сверит их, убедится в идентичности схем данных и позволит запустить систему в штатном режиме.

---

Пошаговый алгоритм восстановления SQL-базы и регенерации DDS

Рассмотрим детально последовательность действий, которая позволяет развернуть архивную копию базы данных и восстановить словарь 1Cv7.dds.

  1. Подготовка каталога базы данных:

    Создадим на диске компьютера или сервера абсолютно пустой каталог (папку), в котором будет располагаться наша рабочая база 1С. Поместим в этот каталог только имеющийся у нас актуальный файл конфигурации 1Cv7.md, который соответствует архивной копии SQL-базы.

  2. Восстановление базы данных на SQL-сервере:

    Используя среду Microsoft SQL Server Management Studio (SSMS), восстановим базу данных из файла резервной копии (бэкапа) с расширением .bak на наш SQL-сервер под нужным именем.

  3. Регистрация базы данных в стартере 1С:

    Запустим программу запуска 1С:Предприятие 7.7. Нажмем кнопку "Добавить" и укажем путь к созданному на первом шаге пустому каталогу, где лежит файл 1Cv7.md. В качестве режима работы выберем "Конфигуратор".

  4. Настройка параметров подключения к SQL (создание 1Cv7.dba):

    Зайдем в запущенный Конфигуратор. Перейдем в меню "Администрирование" -> "Параметры базы данных SQL...". В открывшемся окне укажем актуальные параметры подключения:

    • Имя или IP-адрес SQL-сервера;
    • Имя восстановленной базы данных на SQL-сервере;
    • Имя пользователя SQL (обычно используется системный администратор СУБД — sa);
    • Пароль пользователя.

    Нажмем кнопку "ОК". Выполнение этого действия критически важно: платформа автоматически создаст в каталоге базы зашифрованный файл 1Cv7.dba, содержащий параметры авторизации на SQL-сервере. Без этого файла запуск базы в режиме SQL невозможен.

  5. Провоцирование регенерации словаря данных (DDS):

    Чтобы заставить Конфигуратор пересоздать файл 1Cv7.dds, нам необходимо внести любое изменение в конфигурацию, которое потребует реструктуризации таблиц, но при этом не затронет реальные данные. Разберем два наиболее простых и безопасных способа:

    • Способ А (изменение константы): Найдем в дереве метаданных любую неиспользуемую или техническую константу (например, номер релиза конфигурации). Увеличим длину ее типа данных на один символ (или изменим тип значения с числа на строку, если это безопасно).
    • Способ Б (манипуляция с пробелом): Откроем свойства любой константы. В поле "Идентификатор" или "Синоним" поставим в конце имени пробел, нажмем кнопку "ОК". Затем снова откроем свойства этой же константы, удалим добавленный пробел и опять нажмем "ОК".
  6. Сохранение изменений и запуск реструктуризации:

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

    В этот момент Конфигуратор проанализирует структуру метаданных в файле 1Cv7.md, обратится к SQL-серверу для проверки физического наличия соответствующих таблиц и автоматически сгенерирует новый корректный файл 1Cv7.dds. Поскольку реальных структурных изменений в базу мы не вносили, СУБД не будет перезаписывать или удалять таблицы на сервере, а лишь обновит словарь соответствий.

  7. Копирование служебных каталогов:

    Для полноценной работы базы данных не забудьте скопировать из старого каталога резервной копии (или рабочей базы) сопутствующие папки с внешними отчетами и программными модулями, такие как ExtForms, ExtFiles, PrnForm и т.д.

---

Важные риски при несовпадении версий MD-файла

Выясним причину, по которой крайне опасно использовать для восстановления "почти такой же" или "более новый" файл конфигурации 1Cv7.md, если точная копия на момент создания бэкапа была безвозвратно утеряна.

Если структура таблиц в SQL-базе будет отличаться от структуры метаданных в файле 1Cv7.md, при сохранении конфигурации могут возникнуть следующие фатальные проблемы:

Что делать, если точного файла 1Cv7.md нет? В этом случае системным администраторам и программистам приходится вручную сопоставлять структуру. Для этого используются специализированные инструменты сравнения схем баз данных (например, RedGate SQL Compare) либо парсеры табличной структуры SQL для воссоздания структуры метаданных в файле конфигурации "под копирку" физических таблиц СУБД.

---

Проблемы совместимости с современными версиями MS SQL Server

Платформа 1С:Предприятие 7.7 разрабатывалась во времена Windows 2000/XP и MS SQL Server 2000. При попытке развернуть и запустить базу на современных операционных системах и СУБД (MS SQL Server 2008, 2012, 2016, 2019 или 2022) вы гарантированно столкнетесь с рядом системных ошибок совместимости.

Рассмотрим основные способы решения проблем совместимости:

1. Патч библиотеки bkend.dll

Современные версии MS SQL Server используют более строгие стандарты синтаксиса Transact-SQL и другие протоколы авторизации. Для обхода этих ограничений в ИТ-сообществе применяются модифицированные версии системной библиотеки bkend.dll (находится в каталоге установки платформы 1С C:\Program Files (x86)\1Cv77\bin\). Также используются сторонние компоненты расширения платформы, такие как библиотека 1С++, которые перехватывают и корректируют запросы 1С к SQL-серверу на лету.

2. Проблема порядка сортировки (Кодовая страница)

Очень частая ошибка при первом запуске восстановленной SQL-базы звучит так: "Порядок сортировки, установленный для базы данных, отличается от системного!". Это происходит из-за различий в параметрах сортировки (Collation) базы данных SQL и настроек локали операционной системы Windows.

Чтобы решить эту проблему без переустановки SQL-сервера с другими параметрами сортировки, мы можем применить специальный файл отключения проверки кодовой страницы. Для этого создается файл реестра Windows (с расширением .reg) следующего содержания:


REGEDIT4

[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Init]
"DBF"="NoCheck"

После внесения этой записи в системный реестр проверка сортировки для файловых и SQL баз данных будет отключена, что позволит платформе успешно запуститься на современном сервере.

---

Альтернативный аварийный вариант: Конвертация SQL-бэкапа в формат DBF

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

В этом случае мы можем прибегнуть к конвертации данных в классический файловый формат DBF:

  1. Восстановим базу данных из бэкапа на доступном MS SQL Server.
  2. Используя сторонние утилиты прямого доступа к СУБД или специализированные обработки 1С, выполняющие прямые SQL-запросы через интерфейс ADO (ActiveX Data Objects), выгрузим содержимое таблиц напрямую из базы SQL в файлы формата .dbf. Каждой таблице вида SC* или DH* должен соответствовать одноименный файл .dbf.
  3. Создадим на диске абсолютно пустую файловую базу 1С 7.7. Для этого положим наш файл 1Cv7.md в новую папку, запустим Конфигуратор и сохраним конфигурацию. При этом платформа автоматически сгенерирует файл словаря для файловой версии — 1Cv7.dd.
  4. Скопируем все выгруженные ранее файлы .dbf в каталог созданной файловой базы, заменив пустые таблицы.
  5. Запустим базу в режиме Конфигуратора и выполним процедуру "Тестирование и исправление ИБ" с обязательной установкой галочки "Реиндексация таблиц". Платформа заново построит индексные файлы с расширением .cdx. В результате мы получим полностью рабочую, автономную файловую версию нашей базы данных.
← На главную