Implicit Transactions & Application Role

Comander
Дата: 18.01.2001 13:26:05
Пишу на Delphi 5 клиента под MSSQLServer7, используя BDE. Прочёл в книге полезную вещь: можно в базе данных завести роль приложения (Application role). Затем на клиенте установить соединение с этой базой данных, используя логин любого юзера это базы (даже с минимальными правами и с запретом доступа ко всем объектам), после чего инициализировать роль приложения, выполнив 'EXEC master.dbo.sp_setapprole Rolename, password', тогда соединение начнёт использовать учётную запись роли приложения (для которой уже можно проставить все права и полный доступ ко всем объектам этой базы), а про старую учётную запись (под которой зашли) забудет.
Я так и сделал. Всё прекрасно работало. Но тут обнаружилось, что если сервер находится в режиме Implicit Transactions ON (в свойствах сервера стоит галочка напротив Implicit Transactions), то хр. процедура sp_setapprole выполняться не хочет никакими путями. Пробую сначала выполнить 'SET IMPLISIT TRANSACTIONS OFF' , как в книге туманно советуется - никакого положительного результата.
А хочется, чтобы клиент работал, независимо от галочки на сервере.
Помогите, кто знает, пожалуйста!
Дед Маздай
Дата: 22.01.2001 17:23:46
Я не совсем понимаю, при чем здесь неявные транзакции? Включение действия прикладной роли (sp_setapprole) прекрасно работает и когда они в ON, и когда в OFF. В какой книге это советуется? А вообще эта установка ничем не отличается от других SET'ов: SET IMPLIСIT_TRANSACTIONS ON/OFF - для текущей сессии; sp_configure 'user options', (@@options | или ^ 2) - для всех сессий.
Andriuska
Дата: 22.01.2001 17:33:47
А зачем тебе BDE? С ADO все работает несколько быстрее...