Запуск легендарной платформы 1С 7.7 на современном серверном оборудовании — это настоящий вызов для системного администратора. Проблема заключается в том, что "семерка" была разработана более двадцати лет назад и штатно рассчитана на работу с MS SQL Server 2000. Современные операционные системы и системы управления базами данных (СУБД) давно отказались от поддержки старых протоколов и методов работы с данными, которые использует 1С 7.7. Однако, как показывает практика, при использовании определенных инструментов и настроек, связка 1С 7.7 и SQL Server 2019 вполне жизнеспособна.
В этой статье мы подробно разберем, как преодолеть несоответствие версий MS SQL сервера и заставить 1С 7.7 работать в одной среде с современными версиями 1С 8.3 — для постепенной миграции есть перенос данных из 1С 7.7 в 1С 8.3 с сохранением истории.
Проанализируем ситуацию: штатный движок 1С 7.7 формирует SQL-запросы, используя устаревший синтаксис (например, неявное соединение таблиц через *=). Начиная с MS SQL Server 2012, этот синтаксис был полностью исключен. Если мы попытаемся запустить стандартную 1С 7.7 на SQL Server 2014 или 2019, система выдаст ошибку при первом же обращении к базе. Кроме того, современные версии Windows Server (2019/2022) имеют иную структуру безопасности ODBC-драйверов, что вызывает ошибку sqlsrv32.dll.
Первое и самое важное решение — это использование так называемого «секретного релиза». На самом деле это не отдельный релиз программы, а набор модифицированных файлов (в частности, BkEnd.dll), которые перехватывают запросы 1С и «на лету» переделывают их в формат, понятный современному SQL Server.
Рассмотрим порядок действий при использовании «секретного релиза» версии 6 или 7:
BkEnd.dll в папке BIN на пропатченную версию из «секретного релиза».Odbcbcp.dll и Sqlsrv32.dll, помещенные непосредственно в папку с исполняемым файлом 1С. Также может потребоваться автоматическая распаковка дистрибутивов конфигураций 7.7 для современных ОС.При попытке указать параметры базы данных в Конфигураторе часто возникает ошибка: «Не удается загрузить указанный драйвер из-за системной ошибки 182». Проанализируем причину: 1С 7.7 — это 32-битное приложение, и оно ищет 32-битные драйверы ODBC, которые в современных 64-битных системах работают через прослойку WOW64.
Для исправления ситуации выполним следующие действия:
C:\Windows\SysWOW64\odbcad32.exe.HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI\SQL ServerDriver и Setup указывают на корректные файлы в папке SysWOW64.Выясним, какие настройки СУБД критичны для стабильной работы. Даже если платформа запустилась, база объемом 80 Гб (как у автора вопроса) может вести себя нестабильно. Рассмотрим параметры, которые необходимо изменить в Management Studio:
ALTER DATABASE [Имя_Вашей_Базы]
SET SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON;
Auto Update Statistics в свойствах базы.При работе с базами объемом более 50-80 Гб 1С 7.7 сталкивается с внутренними ограничениями. Посмотрим, как решить проблему «вылета» при загрузке данных:
Если при загрузке через Конфигуратор база переходит в режим SINGLE_USER и зависает, необходимо вручную вернуть ее в многопользовательский режим командой:
ALTER DATABASE [Имя_Базы] SET MULTI_USER;
Также крайне важно использовать скрипты для создания хранимых процедур, которые 1С 7.7 не может создать сама на новых версиях SQL. Например, процедура _1sp_keepconnections должна быть создана вручную в системной базе master или непосредственно в базе данных 1С.
Многие опасаются, что настройки для «семерки» навредят производительности восьмой версии — для настройки совместной работы баз есть утилита COM-соединения для интеграции 1С 7.7 и 1С 8.3. Разберем этот момент: настройки уровня базы данных (Database Level) не влияют на другие базы на том же сервере. Вы можете спокойно держать на одном экземпляре SQL Server 2019 базу «ЗуП 3.1» (8.3) с современными настройками и старую «нетленку» на 7.7 с включенным LEGACY_CARDINALITY_ESTIMATION и специфическими патчами драйверов.
Подведем итог: запуск 1С 7.7 на SQL Server 2019 возможен и даже оправдан для мощного "железа", но требует тщательной подготовки. Основные инструменты — это патченная BkEnd.dll, правильная настройка 32-битного ODBC и корректировка параметров оптимизатора SQL.