пятница, 25 октября 2013 г.

Запуск 1С версии 7.7 релиз 27 (1Cv77 rel 27) на MS SQL Server 2008

Вот здесь найдено очередное описание. Сам ничего патчить не стал - взял проверенное коллегами решение. Но для понимания механизмов - полезно ознакомиться.
 

"Исключительно в образовательных целях расскажем Вам о том, как запустить 1С версии 7.7 релиз 27 на Microsoft SQL Server 2008. Для того, чтобы разобраться, каким образом добиться желаемого результата нам понадобились:
  1. MS SQL Server 2008
  2. Soft ICE
  3. W32Dasm10
  4. HexEdit.
            Посидев немного в профайлере (profilerMS SQL Server 2008  и Soft ICE’е было обнаружено, что после запроса:
select 504,c.name,c.description,c.definition from master.dbo.syscharsets c where c.id = convert(tinyint, databasepropertyex ( db_name() , 'sqlcharset'))
приложение 1С отключается от базы данных с сообщением:
Требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия.
            Оказалось, что результат выполнения строки запроса отличается для MS SQL Server 2000 и MS SQL Server 2008. Таким образом, для дальнейшей нормальной работы необходимо обойти проверку результата или каким-то образом её фальсифицировать. Разумеется, был выбран первый вариант, как наиболее быстрый в реализации. Тут нам помогли: Soft ICE, Hex Edit и Profiler MS SQL Server 2008. Следует заметить, что данная проверка осуществляется в двух различных местах: при запуске конфигуратора и при запуске 1С:предприятия.
            То есть, условный переход необходимо исправить на безусловный в двух местах. Это делается следующим образом:
  1. Открываем BkEnd.dll из пакета 1C версии 7.7 релиз 27 в любом шестнадцатиричном редакторе (HexEdit).
  2. Находим последовательность “74 0С С7 45 08 DA 73 00” и заменяем в ней “74” на “EB”. Это обход проверки для Конфигуратора 1С.
  3. Затем находим последовательность “74 07 BB DA 73 00 00 EB” и заменяем в ней “74” на “EB”. Это обход проверки для :Предприятия.
Кроме того, при сохранении MD файла 1С выполняет следующую команду:
DUMP TRANSACTION WITH TRUNCATE_ONLY.
            Она не поддерживается в MS SQL Server 2008. Для корректной работы 1С необходимо заменить упомянутую команду на:
--MP TRANSACTION WITH TRUNCATE_ONLY
в любом текстовом редакторе (файл BkEnd.dll). И обрезание transaction log внести в регламент работы с базой данных 1С.       
            Внимание, не забудьте пользователю, под которым 1С заходит в базу данных, дать права process admin’а - это обеспечит возможность работы в многопользовательском режиме."

Комментариев нет: