echo 獭獭笔记 | less
在检索时使用count(*)报错kbase

已知条件

  • 有数据表: TABLEA;
  • 用户账号: userAdmin (管理员), userB(普通用户);
  • 用户组: ADMINS组, 非ADMINS组;
  • userAdmin 属于用户组 ADMINS组, userB 未属于任何用户组;
  • userAdmin 有表 TABLEA 的全部权限(检索/管理/更新/添加/删除);
  • userB 有表 TABLEA 的检索权限.

检索语句

1
2
3
4
检索1
-- 检索1
SELECT * FROM TABLEA
GO

检索2

1
2
3
-- 检索2
SELECT count(*) FROM TABLEA
GO

操作发现

使用 userAdmin 在数据库对表 TABLEA 使用 检索1 & 检索2 均能正常返回检索结果.
使用 userB 同样对表 TABLEA 使用 检索1 & 检索2, 检索1 正常返回结果, 检索2 返回错误提示"SQL 语句的参数不正确, 错误码-3501", 如下图:

尝试

遂进行各种尝试, 结果如下:

  1. 用户 userB 类似 检索2 语句形式尝试其他有检索权限的表, 同样报错.
  2. 给用户 userB 添加更多表的检索权限, 使用 检索2 仍然报错.
  3. 给用户 userB 指定表提供管理/更新/添加/删除权限, 使用 检索2 仍然报错.
  4. 把用户 userB 加入 ADMINS组, 使用 检索2 不再报错, 但是该用户不再受数据访问授权控制, 所以不能这么做.
  5. 把用户 userB 加入 非ADMINS组, 使用 检索2 仍然报错.
  6. 企业管理器查找 ADMINS组 与 非ADMINS组 的区别, 暂时没有能明确显示用户组的权限内容.

结论 | G

我觉得这个问题还是跟权限控制有关系, 但是在企业管理器里好像找不到更具体的权限显示, 因此暂且搁置仅作记录.