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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2011, 12:23   #11  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Нагуглил решение проблемы, т. к. и сам с ней столкнулся.

Выкладываю вольный перевод статьи Certain User groups cannot be deleted in Dynamics AX:

Цитата:
Иногда, когда я пытаюсь удалить определенные группы пользователей в Dynamics AX 4.0 или Dynamics AX 2009 я замечаю, что группы пользователей удаляются из грида, но на самом деле не удаляются.

Когда наживаю кнопку Удалить первое, что я замечаю, так это то, что удаление занимает довольно много времени и в течение всего этого времени клиент Dynamics AX висит (не отвечает). После завершения операции и возвращения клиента AX к жизни, группа пользователей больше не отображается в гриде, но при обновлении грида или закрытия и повторного открытия формы Пользователи удаленная группа снова отображается.

Причина, по которой определенные группы пользователей не могут быть удалены -- это некорректные записи в таблице SysSRSTablePermissions. В этой таблице хранится одна запись для каждого домена, группы пользователей и AX Secure View. Если таблица, на которой основана SSRS Secure View, была удалена из AOT, то может так случиться, что соответствующая ей запись все еще находится в этой системной таблице.

Во время удаления группы пользователей SSRS Secure Views тоже обновляются. Если во время этой синхронизации SSRS Secure Views, окажется, что таблица не найдена в AOT, то процесс синхронизации прерывается. Прерывание сопровождается командой ttsabort и транзакция целиком откатывается. Поэтому группа пользователей не удаляется.


Для того, чтобы все-таки удалить такую "проблемную" группу пользователей, необходимо удалить некорректные записи в таблице SysSRSTablePermissions.
Следуя указанным ниже шагам, все записи в таблице SysSRSTablePermissions обновляются для выбранной группы пользователей:
  1. Откройте форму Администрирование / Настройка / Группы пользователей
  2. Выберите группу пользователей, которую необходимо удалить
  3. Нажмите кнопку Права доступа
  4. Выполните следующие шаги для всех существующих доменов:
    1. Выберите домен в списке Домены
    2. Перейдите на закладку Права доступа
    3. Выберите любой ключ безопасности и выполните любое изменение уровня доступа (например, измените его с Нет доступа на Просмотр)
    4. Отмените изменения, которые вы сделали на предыдущем шаге ( например, верните уровень доступа с Просмотр на Нет доступа)
    5. Сохраните изменения и вернитесь на закладку Обзор
  5. После перебора всех доменов закройте форму Права групп пользователей
  6. Теперь в форме Группы пользователей можно продолжить удаление выбранной группы пользователей
Чтобы определить, существуют ли некорректные записи в таблице SysSRSTablePermissions вы можете запустить следующий джоб:
X++:
static void CheckSRSTablePermissions(Args _args)
{
    SysGroup groupName;
    SysSRSTablePermissions srsp;
    DictTable dictTable;
    int validTables = 0;
    int invalidTables = 0;
    ;
 
    //////////////////////////////////////////////
    //This is the name of the group to check for//
    groupName = 'Group1';
    //////////////////////////////////////////////
 
    info(strFmt('CheckSRSTablePermissions: Checking SRS Tables for Group \'%1\'!', groupName));
 
    while select srsp where srsp.GroupId == groupName
    {
        dictTable = new DictTable(srsp.TabId);
 
        dictTable)
        {
            invalidTables++;
            warning(strFmt('Tha Table with the ID 0x%1 does not exit!', int2hex(srsp.TabId,4)));
        }
        else
            validTables++;
    }
 
    if(validTables + invalidTables > 0)
        info(strFmt('CheckSRSTablePermissions: %1 Tables are valid, %2 Tables are invalid', validTables, invalidTables));
    else
        warning('CheckSRSTablePermissions: No Tables were found!');
}
Джоб чуть-чуть видоизменил, чтобы он вообще по всем группам пользователей бегал и выводил:
  • tableid в десятичной системе счисления, а не в шестнадцатеричной
  • название проблемной группы пользователей
X++:
static void CheckSRSTablePermissions(Args _args)
{
    SysGroup groupName;
    SysSRSTablePermissions srsp;
    DictTable dictTable;
    int validTables = 0;
    int invalidTables = 0;
    ;

    while select srsp
    {
        dictTable = new DictTable(srsp.TabId);

        if (!dictTable)
        {
            invalidTables++;
            warning(strFmt('Таблица с ID %1 не существует для группы %2!', srsp.TabId, srsp.GroupId));
        }
        else
            validTables++;
    }

    if(validTables + invalidTables > 0)
        info(strFmt('CheckSRSTablePermissions: %1 Tables are valid, %2 Tables are invalid', validTables, invalidTables));
    else
        warning('CheckSRSTablePermissions: No Tables were found!');
}
Хотя запуск джоба в моем случае показал, что он не все проблемные группы ловит.

Цитата:
Сообщение от Varmen Посмотреть сообщение
Таблица SysSRTablePermissions, она за что отвечает?
В таблице SysSRSTablePermissions хранятся права доступа к таблицам для проверки прав доступа пользователя, когда он строит отчеты с помощью Report Builder в SSRS. И соответсвенно, для каждой группы пользователей эти права определяются именно в таблице SysSRSTablePermissions.

Очевидно, никто не ломал целостность данных нарочно, а произошло это случайно, как описано в указанной выше статье "it can happen"

Последний раз редактировалось Kabardian; 05.12.2011 в 12:45.
За это сообщение автора поблагодарили: Bega (2), gl00mie (3), someOne (3).
Теги
права доступа

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Групп пользователей можно ли экспортировать Daido DAX: Администрирование 4 11.10.2007 12:44
Права групп пользователей Manner DAX: Администрирование 5 03.10.2006 17:16
Настройка форм для групп пользователей Андре DAX: Администрирование 3 17.10.2004 10:59
Настройка форм для групп пользователей Yuri Safronov DAX: Программирование 2 10.09.2002 14:16
Настройка форм для групп пользователей Роман Кошелев DAX: Функционал 14 05.08.2002 16:32

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:41.