【发布时间】: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