1

我有一个由 20 个用户使用的数据库(SQL Server),所有成员都具有相同的安全角色。该角色使他们能够插入、删除和更新 Table1,但他们没有 Table2 的权限。

Table1 有一个触发存储过程 Table2_Refresh 的触发器,它截断 Table2 并从 Table1 重建它。

我在某些地方读到触发器和存储过程作为调用者自动执行,因此使用调用者的权限。然而,20 个用户中有 19 个能够更新 Table1,并且触发器和 SP 执行良好。一位用户收到错误消息,告诉他无法找到 Table2。

我知道我可以在 SQL 中添加一个“EXECUTE AS”行,但这发生在多个地方,而且似乎是用户的问题,所以如果可能的话,我想在那里解决它。由于角色成员资格和权限是相同的,是否还有其他原因导致两个用户在数据库中遇到不同的行为?

4

2 回答 2

1

角色和权限显然不一样...

他们是否以相同的方式登录(例如,他们都使用集成安全性)?

于 2013-07-05T15:18:22.037 回答
0

我建议检查该特殊登录所使用的数据库用户的默认模式。如果表schema是dba但是数据库用户的默认schema是dbo,那么不指定schema查询表就会失败。

于 2017-03-20T17:09:28.123 回答