AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.05.2009, 18:56   #1  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
? Права доступа к SysServerSessions
DAX 4.0 SP2 FP1 EE
Методом тыка обнаружил, что для чтения таблички SysServerSessions необходимо дать права не только на саму таблицу, но и на ключ AdminDaily (если на него не дать права, то табличка оказывается пустой).

Кто-нибудь может пояснить почему так?

P.S. Доступ к данным проверял через System Documentation.
__________________
Ivanhoe as is..
Старый 03.10.2012, 19:32   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Наверно вы уже нашли ответ на вопрос, но отвечу.
Причина в том, что на табличке выставлен ключ контроля доступа AdminDaily и выставлено свойство AosAutorization.

А мой вопрос связан вот с чем :
Выявлен глюк ядра, - если для пользователя нет прав на чтение из этой таблички, то при попытке чтения из неё может прерываться выполнение кода, но транзакция не откатывается ((((
У нас это вылезло при вызовах с клиента метода \Data Dictionary\Tables\SysEmailSMTPPassword\Methods\currentAOSInstance

Т.е. при попытке отправить почту работа прерывалась а транзакция не откатывалась.

Кто еще такое встречал и как боролись ?
Старый 04.10.2012, 12:03   #3  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Да, конечно сталкивались.

Причина скорее в системных таблицах (они участвуют в методе currentAOSInstance таблицы SysEmailSMTPPassword)

SYSclientSessions
SYSserverSessions

На которых видимо, выставлено свойство AosAutorization.

Так как таблицы системные, снять это свойство (AosAutorization) через АОТ с них нельзя.



Можно, например настроить сервер smtp без использования пароля вообще,
(на какой нибудь порт отличный от порта по умолчанию)

У нас работает так

X++:
static SMTPPassword password()
{
    CryptoBlob cryptoBlob = connull();
    SysEmailSMTPPassword SMTPPassword;

    AOSId AOSId;
    AOSInstanceId AOSInstanceId;

    ;
    // пришлось сделать так как под правами обычных пользователей не проходит метод
    // SysEmailSMTPPassword::currentAOSInstance() без указания ошибки
    // и почта не отправляется даже в режиме пакета
    // подозреваю что это из за глюка с AosAuthorization

    return "";
    // <---

    [AOSId,AOSInstanceId] = SysEmailSMTPPassword::currentAOSInstance();

    SMTPPassword = SysEmailSMTPPassword::find(AOSId,AOSInstanceId);

    if (SMTPPassword.RecId != 0)
        cryptoBlob = SMTPPassword.Password;

    if (cryptoBlob != connull())
        return cryptoblob2str(WinapiServer::cryptUnProtectData(cryptoBlob));
    else
        return '';
}
- можно наверное прописать пароль как константу в коде
- может попробовать прописать методе таблицы SysEmailSMTPPassword
X++:
public static server container currentAOSInstance()
....
clientSessions.skipAosValidation(true);
Я это не пробовал, может поможет ?

Последний раз редактировалось someOne; 04.10.2012 в 12:08.
За это сообщение автора поблагодарили: SuperStar88 (1).
Старый 04.10.2012, 12:40   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от someOne Посмотреть сообщение
Да, конечно сталкивались.
...
- может попробовать прописать методе таблицы SysEmailSMTPPassword
X++:
public static server container currentAOSInstance()
....
clientSessions.skipAosValidation(true);
Я это не пробовал, может поможет ?
Спасибо за ответ.
Да причина именно в этих системных табличках. Мы так как вы написали и сделали, хотя конечно это не совсем правильный способ, но по крайней мере надежный.

А сталкивались вы именно с невозможностью чтения из SYSserverSessions ? (это как раз нормально и правильно) или у вас тоже прерывалась работа без отката транзакции ? (это трындец какой ядреный глюк )
Старый 04.10.2012, 14:31   #5  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Так а прав дать не помогает?
__________________
Ivanhoe as is..
Старый 04.10.2012, 14:42   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Так а прав дать не помогает?
Конечно помогает, но ну его нафиг на это закладываться, когда у вас сотни пользователей в базе.
Завтра в техподдержке кто-нить глюканет, подрежет права слишком сильно, а у меня Аксапта начнет транзакции открытыми оставлять и все зависнет - нафига мне этот геморрой ?
За это сообщение автора поблагодарили: someOne (2).
Старый 04.10.2012, 17:28   #7  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
А сталкивались вы именно с невозможностью чтения из SYSserverSessions ? (это как раз нормально и правильно) или у вас тоже прерывалась работа без отката транзакции ? (это трындец какой ядреный глюк )
Да сталкивались. Как лечить - не знаю.

Самое надежное как мне кажется, в данной ситуации - это не "завязывать" в транзакцию отправку сообщений по электронной почте. Мало ли глюк с почтой какой. Например начнет почтовый сервер "тормозить" - при этом может зависнуть транзакция в которой идет отправка сообщения. Из за открытой транзакции возникнут блокировки у других пользователей и это может вырасти как снежный ком

Сделал так - почта не отправляется в транзакции (например при разноске накладной), а создается пакетное задание для какой то отдельной пакетной группы.

Соответственно получается два независимых процесса - отправка почты и разноска накладной, и друг другe они уже не могут помешать...
Старый 04.10.2012, 18:03   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Да, согласен.
У нас тоже есть инструмент по такой отправке почты, только не везде он еще применяется. В перспективе - везде сделаем.
Старый 15.10.2013, 17:47   #9  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
Тоже сегодня столкнулся с этим багом. Видимо. его уже не вылечат.
Старый 15.10.2013, 19:38   #10  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
На какой версии системы?
__________________
Ivanhoe as is..
Старый 18.03.2014, 10:08   #11  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Мда, стрёмный баг.
Помогло skipAosValidation, но запускать его надо обязательно на сервере. Ax4
Как-то так:

PHP код:
public server static str getAOSId()
{
    
SysClientSessions clientSessions;
    
SysServerSessions serverSessions;
    
SkipAOSValidationPermission   permission;
    ;

    
select firstonly clientSessions
        where clientSessions
.SessionId == sessionId();

    if (!
clientSessions)
        return 
'';
        
    
permission = new SkipAOSValidationPermission();
    
permission.assert();
    
serverSessions.skipAosValidation(true);

    
select firstonly serverSessions
            where serverSessions
.ServerId == clientSessions.ServerId;

    return 
serverSessions.AOSId;

__________________
С уважением, Игорь Ласийчук.
За это сообщение автора поблагодарили: Logger (1).
Старый 08.05.2015, 10:12   #12  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
На какой версии системы?
У нас ядро от RU7
воспроизводится.
Теги
ax4.0, bug, email, sysserversessions, права доступа

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
права доступа Himan DAX: Функционал 9 24.09.2010 16:52
Права доступа Группы пользователей к таблице ta_and DAX: Администрирование 2 19.01.2009 15:19
Права доступа на поля формы. AlexeyBP DAX: Функционал 6 12.12.2006 12:02
Опять про права доступа Manner DAX: Администрирование 2 14.02.2005 14:03
Права доступа - Журнал платежей SDA DAX: Прочие вопросы 1 20.09.2004 23:10
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.