我有一个由20位用户使用的数据库(SQL Server),这是同一安全角色的所有成员。该角色使他们能够插入,删除和更新到Table1,但他们对Table2没有权限。SQL Server中的触发器和存储过程安全性
Table1有一个触发器触发一个存储过程Table2_Refresh,它截断Table2并从Table1重新构建它。
我在某些地方看过触发器和存储过程自动执行的调用者,因此使用调用者的权限。然而20个用户中的19个能够更新Table1,触发器和SP执行得很好。一位用户得到一个错误,告诉他无法找到Table2。
我知道我可以在SQL中放置一个'EXECUTE AS'行,但这种情况发生在多个地方,看起来像是用户的问题,所以我想尽可能在那里解决它。由于角色成员和权限是相同的,所以两个用户会遇到与数据库不同的行为还有其他原因吗?