Реализация в виде прокси-dll, в которой исправляются известные проблемы платформы:
- невозможность работы, при запуске на mssql 2005-2014 (без патчинга bkend.dll);
- невозможность работы без понижения режима совместимости до mssql 2000, при запуске на mssql 2005-2014;
- невозможность работы в ОС 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;
- MS SQL 2014;
Состав поставки:
- BkEnd.dll - proxy-dll;
- BkEndUtls.dll - служебная библиотека;
Порядок установки:
- Установить платформу из оригинального установщика;
- Установить и настроить HASP-ключ (обязательное условие, а то к вам придут врачи);
- Переименовать оригинальный файл BkEnd.dll в BkEnd0.dll (0 - это ноль);
- Скопировать файлы BkEnd.dll и BkEndUtls.dll из поставки в каталог, куда установлена 1с (например, C:\Program Files\1Cv77\BIN);
Для счастливых обладателей dbf-версии ничего не меняется.
Для обладателей sql-версии, у которых база данных размещается на MS SQL 2005-2014, необходимо соблюсти следующие требования для 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-2014);
Возникли проблемы? Отписываемся в следующем формате:
- версия сборки и дата файлов 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-авторизацию;