Как исправить ошибку driver version mismatch в 1С 7.7 при работе с SQL Server 2012/2014?

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

При эксплуатации легендарной платформы 1С:Предприятие 7.7 на современных операционных системах и СУБД (Windows Server 2012/2016, SQL Server 2012/2014 и выше) администраторы часто сталкиваются с невозможностью изменения структуры конфигурации. Ошибка "driver version mismatch" возникает в Конфигураторе при попытке сохранить изменения, требующие реструктуризации таблиц базы данных. Это происходит из-за того, что штатные механизмы 1С 7.7 жестко ориентированы на работу с драйверами и синтаксисом SQL Server 2000.

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

Почему возникает ошибка driver version mismatch?

Разберем техническую подоплеку ситуации. Когда мы нажимаем кнопку «Сохранить» в Конфигураторе, система инициирует проверку окружения. Проблема кроется в библиотеке dbeng32.dll (или bkend.dll в зависимости от сборки), которая обращается к системному драйверу ODBC sqlsrv32.dll. Программа ожидает увидеть версию драйвера, соответствующую SQL Server 2000. В современных ОС Windows версия этого файла значительно выше, что и вызывает блокирующее сообщение об ошибке.

Ситуация осложняется тем, что SQL Server 2014 и более новые версии официально не поддерживают режим совместимости Compatibility Level 80 (SQL 2000). Минимально доступный уровень в них — 100 (SQL 2008). Из-за этого штатная реструктуризация не может корректно выполнить SQL-запросы на изменение типов колонок или создание новых таблиц, так как 1С формирует их в устаревшем синтаксисе.

Способ №1: Ручная синхронизация метаданных и SQL-структуры

Этот метод считается наиболее быстрым для опытных администраторов, так как он не требует полной выгрузки и загрузки данных, что критично для баз объемом в сотни гигабайт. Проанализируем ситуацию на примере изменения точности числового поля (увеличение количества знаков после запятой).

Пошаговый алгоритм действий:

  1. Подготовка нового файла метаданных: Возьмем текущий файл 1Cv7.md из рабочей серверной базы. Создадим пустую папку и развернем в ней новую файловую базу, используя этот MD. В этой «пустышке» внесем необходимые изменения (например, изменим длину поля в документе или справочнике) и сохраним конфигурацию. Теперь у нас есть целевой MD файл.
  2. Анализ физической структуры: Откроем файл 1Cv7.dds из нашей пустой измененной базы. Нам нужно найти идентификатор таблицы и колонки, которую мы изменили. Например, поле «Сумма» может соответствовать колонке SP4072 в таблице DH2000.
  3. Правка на стороне SQL Server: Запустим SQL Server Management Studio (SSMS). Найдем нужную таблицу и колонку в рабочей базе данных. Выполним SQL-запрос ALTER TABLE для изменения типа данных. Например:
    
    ALTER TABLE DH2000 
    ALTER COLUMN SP4072 NUMERIC(15, 3);
    
    Это изменит физическую структуру таблицы без участия 1С.
  4. Подмена файла метаданных: Заменим старый файл 1Cv7.md в каталоге серверной базы на новый (подготовленный в пункте 1). Важно: обязательно удалим файл 1Cv7.dds в каталоге базы.
  5. Обновление словаря данных: Зайдем в Конфигуратор серверной базы. Поскольку файла DDS нет, система предложит его создать или обновить. Чтобы принудительно синхронизировать логику, внесем любое незначительное изменение (например, добавим пробел в описание конфигурации) и нажмем «Сохранить». Если «секретный релиз» настроен правильно, система создаст новый DDS, соответствующий новой структуре MD и фактически измененной нами структуре SQL.

Способ №2: Использование буферного (промежуточного) сервера

Если ручная правка SQL-таблиц кажется слишком рискованной или изменений слишком много, рассмотрим вариант, который успешно применил автор темы. Этот метод заключается в создании временной среды, «понятной» для 1С 7.7.

Рассмотрим шаги реализации:

  1. Создадим виртуальную машину (например, через Hyper-V или VMware) с операционной системой Windows Server 2008 или Windows XP/2003.
  2. Установим на нее SQL Server 2005 или SQL Server 2008. Эти версии еще поддерживают Compatibility Level 80.
  3. Развернем на этом промежуточном сервере копию вашей базы 1С 7.7. На этой системе ошибка driver version mismatch либо не возникнет, либо легко обходится заменой sqlsrv32.dll на старую версию.
  4. Выполним все необходимые изменения в Конфигураторе на этом сервере. Система успешно проведет реструктуризацию таблиц, так как версия SQL это позволяет.
  5. После завершения реструктуризации сделаем бэкап базы средствами SQL Server или выгрузку в .zip через Конфигуратор.
  6. Загрузим обновленную базу обратно на основной сервер (SQL 2014). При этом нам нужно будет только заменить MD файл и, возможно, выполнить загрузку данных.

Важные технические нюансы и "Секретный релиз"

Проанализируем понятие «секретного релиза». Обычно под этим подразумевается набор пропатченных библиотек (в основном BkEnd.dll), которые позволяют 1С 7.7 игнорировать проверку версии SQL Server и корректно работать с SQL 2012/2014. Однако, даже такие патчи часто не решают проблему проверки ODBC-драйвера при реструктуризации.

Полезный совет: Если вы используете «секретный релиз», убедитесь, что при установке вы правильно заменили файлы. Иногда помогает переименование оригинальной библиотеки в BkEnd0.dll перед копированием патченной, чтобы система корректно подхватила новые вызовы функций.

Также выясним причину медленной загрузки данных в файловый вариант. Как отметил автор темы, загрузка из архива может длиться более 12 часов. Это происходит из-за того, что 1С 7.7 при загрузке данных в DBF выполняет колоссальный объем операций по проверке индексов и целостности. Поэтому для задач изменения структуры всегда предпочтительнее работать с пустой базой (только MD), а затем переносить изменения в SQL-базу с данными, как описано в Способе №1.

Вывод: Ошибка driver version mismatch — это не приговор для базы. Используя комбинацию ручной правки таблиц через SSMS и подмены файлов метаданных, или задействовав временный сервер со старой версией SQL, мы можем продолжать развивать конфигурации на платформе 7.7 даже в современных ИТ-ландшафтах.

← На главную