1

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

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

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

我写了一个简单的工作:

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

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

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

任何想法任何人??????

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

你好 !(对不起,我的英语不好)

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

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

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

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

这是带有错误的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 的代码中,由于绕过了上述条件,因此管理员用户没有这个问题是有意义的。

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

任何帮助表示赞赏:)

提前致谢 :)

== 结束原始消息 ===================

4

2 回答 2

2

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

于 2011-11-28T13:35:06.103 回答
1

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

于 2010-06-30T09:18:52.723 回答