我有一个由 20 个用户使用的数据库(SQL Server),所有成员都具有相同的安全角色。该角色使他们能够插入、删除和更新 Table1,但他们没有 Table2 的权限。
Table1 有一个触发存储过程 Table2_Refresh 的触发器,它截断 Table2 并从 Table1 重建它。
我在某些地方读到触发器和存储过程作为调用者自动执行,因此使用调用者的权限。然而,20 个用户中有 19 个能够更新 Table1,并且触发器和 SP 执行良好。一位用户收到错误消息,告诉他无法找到 Table2。
我知道我可以在 SQL 中添加一个“EXECUTE AS”行,但这发生在多个地方,而且似乎是用户的问题,所以如果可能的话,我想在那里解决它。由于角色成员资格和权限是相同的,是否还有其他原因导致两个用户在数据库中遇到不同的行为?