我有 2 个不同的数据库角色。我们称它们为“角色 A”和“角色 B”。
我有以下查询:
with part_1 as (
select col_1
from table
where id <= 100
)
select p1.col_1
from part_1 as p1;
使用“角色 A”,整个查询失败,但不是 CTE 的内部是我只是突出显示并运行它。
如果我切换到“角色 B”,我做这件事没有任何问题。
有什么建议或意见吗?我不明白 2 个不同的角色会产生不同的结果。
答案 0 :(得分:0)
大概是因为角色 A 没有对“表”的选择权限,但角色 B 有。
角色的全部意义在于为不同的用户提供不同的访问权限,因此这种行为既是预期的又是期望的
答案 1 :(得分:0)
缺少一些权限差异,正如您所注意到的,它们似乎都在运行
using role role_a;
select col_1
from table
where id <= 100;
using role role_b;
select col_1
from table
where id <= 100;
所有工作都意味着两者都可以访问该表..
它是一个表而不是一个视图?
select get_ddl('table','database.schema.table_name');
或者这对两个角色都有效
WITH part_1 AS (
SLEECT col_1 FROM table
WHERE id <= 100
)
select p1.*
from part_1 as p1;
在此之后我会问一个支持问题,因为这听起来很像一个错误,但理解为什么需要支持才能深入了解实际情况。