Как запустить SQL-версию 1С:Предприятие 7.7 на Windows 10 и исправить ошибку ODBC?

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

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

При попытке запустить базу данных на Windows 10 пользователи обычно получают ошибку о том, что версия ODBC-драйвера должна быть 3.5 или выше (хотя в системе установлена более новая версия). Если же попытаться заменить стандартные файлы драйверов на старые версии из Windows XP или Windows Server 2003, система начинает выдавать ошибку "SQL: IM003, Native 160", ругаясь на невозможность инициализации драйвера. В этой статье мы подробно разберем, почему возникает эта проблема, и рассмотрим три практических способа ее решения.

Выясняем причину конфликта: роль библиотеки sqlunirl.dll

Для того чтобы понять, почему Windows 10 блокирует запуск старой версии 1С, проанализируем механизм взаимодействия платформы с базой данных Microsoft SQL Server. Исторически 1С 7.7 использует для подключения стандартный драйвер SQL Server (из набора MDAC).

Когда мы пытаемся скопировать старые версии файлов драйвера sqlsrv32.dll, sqlsrv32.rll и odbcbcp.dll из Windows XP в каталог C:\Windows\SysWOW64 на Windows 10, мы восстанавливаем совместимость структуры ODBC. Однако эти библиотеки при работе обращаются к системной библиотеке строковых функций SQL Enterprise Components — sqlunirl.dll.

В Windows 10 файл sqlunirl.dll имеет обновленную версию, функции которой не совпадают со старыми вызовами из драйверов эпохи Windows XP. Происходит разрыв цепочки вызовов, и операционная система выдает внутреннюю ошибку 182 (или 126 — "Не найден указанный модуль") при попытке инициализировать драйвер SQL. Именно это и приводит к ошибке IM003 в 1С.


Способ 1. "Грязная" подмена системных библиотек (быстрое решение)

Самый простой и быстрый способ запустить систему — полностью заменить комплект библиотек в системной папке Windows 10 на рабочие версии из предыдущих операционных систем (Windows XP, Windows 7 или папки Windows.old после обновления).

Рассмотрим этот процесс по шагам:

  1. Найдем рабочий компьютер под управлением Windows XP или Windows 7 (обязательно 32-разрядной архитектуры или возьмем файлы из каталога SysWOW64 64-разрядной системы).
  2. Скопируем из системной папки следующие файлы:
    • sqlsrv32.dll
    • sqlsrv32.rll
    • odbcbcp.dll
    • sqlunirl.dll
  3. На целевом компьютере с Windows 10 перейдем в каталог C:\Windows\SysWOW64 (так как 1С 7.7 является 32-битным приложением и в 64-разрядной Windows работает через эмулятор WOW64).
  4. Предварительно сделаем резервную копию оригинальных файлов Windows 10 из этой папки, сохранив их в надежном месте.
  5. Заменим системные файлы sqlsrv32.dll, sqlsrv32.rll, odbcbcp.dll и обязательно sqlunirl.dll скопированными старыми версиями.

Важное предупреждение: Прямая замена файлов в системной папке SysWOW64 является грубым вмешательством в работу операционной системы. Это может нарушить работоспособность любого другого программного обеспечения на этом компьютере, которое использует современный ODBC-драйвер для работы со свежими версиями MS SQL Server (например, платформы 1С 8.3, современных BI-систем или веб-серверов).


Способ 2. Использование "Секретного релиза" (Proxy-DLL метод)

Если вы не хотите изменять системные файлы операционной системы или у вас на этой же машине работают другие программы, активно использующие MS SQL, лучшим решением станет использование так называемого "секретного релиза платформы" (в сообществе системных администраторов он также известен как патч от Rieba или Solution).

Этот метод абсолютно безопасен для операционной системы, так как не требует изменения файлов в SysWOW64. Принцип его работы заключается в следующем:

Дополнительным и очень важным плюсом данного метода является то, что этот патч позволяет подключать 1С 7.7 к современным СУБД MS SQL Server (2005, 2008, 2012, 2016) без необходимости искусственно занижать уровень совместимости базы данных (Compatibility Level) до уровня SQL 2000.

Однако помните о технических нюансах: для работы прокси-библиотеки пользователю SQL, под которым 1С подключается к базе данных, необходимо выдать права уровня db_owner и системную роль VIEW SERVER STATE на сервере СУБД.


Способ 3. Безопасная изоляция драйверов (Метод Shim / 1sfix.sdb)

Существует компромиссный, полностью лицензионно чистый способ, который позволяет изолировать старые версии драйверов индивидуально для процесса 1cv7s.exe с помощью механизма совместимости приложений Microsoft (Application Compatibility Toolkit).

Разберем этот изящный метод по шагам:

  1. Создадим на диске C: отдельный каталог, например C:\1Cv7_SQLDriver.
  2. Поместим в этот каталог старые версии файлов: odbcbcp.dll, sqlsrv32.dll, sqlsrv32.rll, sqlunirl.dll.
  3. В реестре Windows создадим альтернативную ветку настроек драйвера (например, скопировав параметры ODBC в ветку HKLM\SOFTWARE\1C_SQL_ODBC) и укажем там пути к файлам из созданной папки C:\1Cv7_SQLDriver.
  4. С помощью утилиты Windows Compatibility Administrator создадим файл базы данных совместимости 1sfix.sdb. Этот файл будет содержать правило (Shim): при запуске исполняемого файла 1cv7s.exe перенаправлять все его запросы к ветке реестра ODBC на нашу кастомную ветку HKLM\SOFTWARE\1C_SQL_ODBC.
  5. Установим созданную базу совместимости в систему через командную строку с правами администратора: sdbinst.exe -q C:\PathToFix\1sfix.sdb

Таким образом, для операционной системы и всех других программ драйверы останутся нетронутыми, а программа 1С 7.7 будет прозрачно для себя использовать старые версии библиотек из изолированной папки.


Дополнительные проблемы при запуске 1С 7.7 на Windows 10

Даже решив проблему с ODBC-драйвером, вы гарантированно столкнетесь еще с двумя классическими препятствиями 1С 7.7 на современных ОС.

Проблема 16-битного установщика

Оригинальный файл установки платформы setup.exe является 16-разрядным приложением. 64-битные версии Windows 10 физически не могут его запустить. Для решения этой проблемы просто перенесите уже установленную папку 1Cv77 с любого старого компьютера в каталог C:\Program Files (x86)\ на новой машине и зарегистрируйте необходимые библиотеки (например, V7Plus.dll) вручную через утилиту regsvr32. При возникновении сложностей с системными ключами можно изучить руководство по особенностям регистрации 1С 7.7 в реестре Windows.

Ошибка порядка сортировки базы данных

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

Для обхода этой проверки выполните следующие действия:

  1. Перейдите в каталог установленной платформы (обычно это папка BIN).
  2. Создайте в этом каталоге пустой текстовый файл.
  3. Переименуйте его, присвоив имя OrdNoChk.prm.

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

← На главную