能否使用_Users._Disabled设置用户启停状态?OpenEdge 11.6.3下操作是否安全?
OpenEdge 用户启停用操作解答
需求可行性说明
你提到的_Users._Disabled系统字段完全可以实现部分用户启用、其余停用的业务需求,这是Progress OpenEdge官方提供的原生用户状态控制字段,11.6.3版本已稳定支持,你当前使用的Windows Server 2016服务端、Windows 8.1/Windows 10工作站环境完全兼容该功能。
补充:你提到未在查阅的文档中找到对应说明,该字段的定义收录在OpenEdge 11.6版本的《Database Administration Guide》系统表参考章节,属于官方公开允许修改的系统字段,并非未公开内部字段。
操作方法
- 字段为逻辑类型:赋值为
yes时对应用户停用,无法通过原生身份验证登录数据库;赋值为no时对应用户启用,可正常登录 - 批量操作可通过ABL代码实现,示例如下:
/* 批量停用不在白名单内的普通用户示例 */ FOR EACH _Users WHERE _Users._Userid <> "SYSPROGRESS" AND _Users._Userid NOT IN ("用户ID1", "用户ID2", "需要保留启用的用户ID") EXCLUSIVE-LOCK: ASSIGN _Users._Disabled = YES. END.
- 字段修改后即时生效,无需重启数据库或应用服务,不会影响已在线的正常用户使用。
安全注意事项
该操作本身不存在系统性风险,遵守以下规则即可完全规避操作问题:
- 操作前必须备份完整的
_Users表数据,避免误操作导致所有管理员用户被锁无法访问数据库 - 禁止修改
SYSPROGRESS等内置系统用户的_Disabled字段,否则可能导致数据库管理功能异常 - 批量操作前先在测试环境验证逻辑正确性,确认符合业务预期后再到生产环境执行
- 操作完成后可抽查测试用户的登录状态,确认启停用规则生效正常
内容的提问来源于stack exchange,提问作者Ezequiel
相关产品推荐
相关产品推荐

