Секретный релиз платформы v77.27.7

Опубликовал Кирилл Иконников (spock) в раздел Программирование - Инструментарий

Исправления платформы, позволяющие запустить 1cv77 в клиент-серверном варианте на СУБД MS SQL 2005/2008/2008r2/2012 без понижения режима совместимости.

Реализация в виде прокси-dll, в которой исправляются известные проблемы платформы:

  • невозможность работы, при запуске на mssql 2005/2008/2008r2/2012 (без патчинга bkend.dll);
  • невозможность работы без понижения режима совместимости до mssql 2000, при запуске на mssql 2005/2008/2008r2/2012;
  • невозможность работы в ОС Win Vista/7/8/8.1 в режиме клиент-сервера (без манипуляций с файлами odbc-драйвера); 

Ограничения:

  • нет совместимости с некоторыми 1c++ запросами (ищу решение); 

Поддерживаемые клиентские ОС:

  • Windows 2000;
  • Windows XP;
  • Windows 2003;
  • Windows Vista;
  • Windows 7;
  • Windows 8;
  • Windows 8.1; 

Поддерживаемые SQL-сервера:

  • MS SQL 2000;
  • MS SQL 2005;
  • MS SQL 2008;
  • MS SQL 2008 r2;
  • MS SQL 2012;

Состав поставки:

  • BkEnd.dll - proxy-dll;
  • BkEndUtls.dll - служебная библиотека; 

Порядок установки:

  1. Установить платформу из оригинального установщика;
  2. Установить и настроить HASP-ключ (обязательное условие, а то к вам придут врачи);
  3. Переименовать оригинальный файл BkEnd.dll в BkEnd0.dll (0 - это ноль);
  4. Скопировать файлы BkEnd.dll и BkEndUtls.dll из поставки в каталог, куда установлена 1с (например, C:\Program Files\1Cv77\BIN);

Для счастливых обладателей dbf-версии ничего не меняется.

Для обладателей sql-версии, у которых база данных размещается на MS SQL 2005/2008/2008r2/2012, необходимо соблюсти следующие требования для sql-логина (учетка, под которой 1с подключается к sql):

  • обладание, как минимум правами db_owner;
  • права на VIEW SERVER STATE; 

С первым требованием все и так ясно, второе - требует пояснений. Для определения количества соединений к текущей базе данных, 1с обращается к системной таблице sysprocesses. Если у логина отсутствуют права на VIEW SERVER STATE, то будут видны только соединения, осуществленные под своей учеткой, что не совсем хорошо - нужно видеть все соединения с текущей базой, чтобы получать адекватые сообщения об ошибках. Большинство "специалистов" запускает 1с под учеткой SA (или другой, но с соответствующими суперправами), следовательно, у них такой проблемы не стоит. Зато имеется другая проблема - так называемый фоновый процесс сброса грязных страниц из кэша буфера данных, при выполнении которого, не удается запустить 1с в монопольном режиме.

В MS SQL 2005/2008 системная таблица (уже представление, оставленное для обратной совместимости) sysprocesses помечена устаревшей и в следующих редакциях MS SQL будет удалена. Компания Microsoft рекомендует использовать текущие аналоги - так и поступаем :) Для определения соединений к текущей базе данных (в этом исправленном релизе платформы 1с) больше не используется системная таблица sysprocesses (если ms sql 2005/2008, для ms sql 2000 используется).

Для того, чтобы дать права на VIEW SERVER STATE нужно выполнить простой скрипт:

USE master
GO

GRANT VIEW SERVER STATE TO
 <your_login>
GO

Все остальные настройки по-умолчанию.

 

Общие рекомендации

  • не использовать это решение без достаточного тестирования в вашем окружении;
  • не класть OrdNoChk.prm в каталоги Программы и ИБ;
  • вызывать реструктуризацию, если база данных до этого использовалась с родной BkEnd.dll (в хранимых процедурах есть код, который не проходит по ограничениям MSSQL 2005/2008/2008r2/2012);
  •  

Возникли проблемы? Отписываемся в следующем формате:

  • версия сборки и дата файлов bkend.dll и bkendutls.dll;
  • сервер СУБД в формате select @@version;
  • версия ОС;
  • конфигурация 1с;
  • действия, которые вызывали проблему;
  • делали ли, как выразился один из тестеров, "так называемую" реструктуризацию; 

Disclaimer

Все права на ПП 1С:Предприятие принадлежат компании 1С (www.1c.ru). Ни один бит оригинальных файлов не изменен, все манипуляции выполняются штатными возможностями Microsoft(c) Windows(c).

Для чего это нужно?

Пока честные пользователи пытаются перейти с 1cv77 на 1cv8.x, необходимо иметь крепкий тыл в виде настроенной инфраструктуры, которая развернута на современном оборудовании и современном ПО. Однако, необходимо соблюсти лицензионную чистоту как по отношению к 1с, так и к Microsoft. Данным решением это получается сделать: бинарники 1c остаются нетронутыми, ПО от Microsoft актуально и современно.

У кого нет острой необходимости менять MS SQL 2000 на более свежие версии, тем нет надобности прибегать к этому решению.

Использование Вами данного решения  идет по принципу "AS-IS".

Критика и конструктивные предложения принимаются. 

History log

  • Реструктуризация теперь завершается инструкцией CHECKPOINT, вместо DUMP TRANSACTION WITH TRUNCATE_ONLY;
  • Изменена схема поиска хинтов;
  • Изменены формальные признаки для поиска хинтов;
  • Реструктуризация проекта;
  • Отключена проверка порядка сортировки (если в каталоге программы или ИБ будет лежать OrdNoChk.prm, то используются родные механизмы платформы);
  • Оптимизирована работа с постоянными объектами проекта;
  • Для версии sql2000 и ниже используются родные механизмы, без вмешательств;
  • Внес ошибку, когда устранял проблему SELECT GetDate();
  • Устранил ошибку (добавил новых :) );
  • Отключил установку/снятие режима bulk/copy;
  • Реализовал возможность запуска 1с через win-авторизацию;

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Solution7
.rar 136,21Kb
16.01.12
1470
.rar 136,21Kb 1470 Скачать

См. также

Комментарии