【问题标题】:Cannot select a record in User Information (UserInfo). User ID: , . Dynamics Ax 2009无法在用户信息 (UserInfo) 中选择记录。用户身份: , 。动力斧 2009
【发布时间】:2010-05-25 21:40:25
【问题描述】:

== 已更新 :) =========

!似乎又是一个 2100 的限制!请帮忙!

以下是我们发现的一些更新:

我写了一个简单的工作:

server static void testEs(Args _args)
{
    UserInfo t;
    ;
    select t;
}

当我以管理员身份运行它时,没有问题。当我删除我的管理员权限并再次运行它时,我仍然收到该错误: 无法在用户信息 (UserInfo) 中选择记录。用户 ID: , .

为了简单的测试,我们删除了一些用户,从 2188 到 2074 个用户。删除的用户已在系统中存在一段时间(一个月前)。我重做了相同的测试(在非管理员时运行上述作业),现在它可以工作了。

有人知道吗??????

== 原始信息 ==================

嗨! (对不起我的英语不好)

当非管理员用户尝试在我们的生产环境中登录 Ax 时,我们遇到了问题。

实际上,有一个包含这些消息的信息日志(堆栈跟踪附加到消息中):

== 信息日志 ========

无法在用户信息 (UserInfo) 中选择记录。用户身份: , 。 SQL 数据库已发出错误。
(S)\Classes\Info\checkStartupCompany_Server - 第 8 行 (C)\Classes\Info\checkStartupCompany - 第 4 行 (C)\Classes\Info\startup - 第 49 行

这是有 bug 的 sql 语句:

SQL 语句:SELECT TOP 1 A.COMPANY,A.ID,101090 FROM USERINFO A WHERE ((((ID IN (?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?, [..然后继续..] ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)))

== 结束信息日志 ========

这里是 Info::checkStartupCompany_Server 的内容,并带有 HERE 注释它的错误:

server static void checkStartupCompany_Server(str _curext, userId _curuseid)
{
    UserInfo userInfo;

    if (!hasMenuItemAccess(menuitemdisplaystr(SysDataAreaSelect), MenuItemType::Display) ||
        !hasMenuItemAccess(menuitemdisplaystr(SysDataArea), MenuItemType::Display))
    {
        select firstonly Company from userInfo
            where userInfo.Id == curuserid(); // <== HERE !!!!!!!!!!!!!!

        if (userInfo.Company != curext())
        {
            appl.setDefaultCompany(userInfo.Company, false);
        }
    }
}

=============

在 Info::checkStartupCompany_Server 的代码中,由于绕过了上述条件,因此 Admin 用户没有这个问题是有意义的。

我们现在对公司设置有疑问。

任何帮助表示赞赏:)

提前致谢:)

== 结束原始信息 ==================

【问题讨论】:

    标签: axapta dynamics-ax-2009 userinfo


    【解决方案1】:

    在您的酸性 AOS 上增加过程调用 (RPC)。 else 删除一些最近导入的用户。 就我而言,这是可行的。

    【讨论】:

      【解决方案2】:

      我认为您可能在 UserInfo 表上启用了记录级别安全性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-17
        • 2016-12-31
        • 1970-01-01
        • 2017-08-28
        • 2020-12-04
        • 2017-03-13
        • 2016-03-30
        相关资源
        最近更新 更多