我有一个数据库(SQL Server),由20个用户使用,所有成员都具有相同的安全角色。该角色使他们能够插入,删除和更新到Table1,但他们没有Table2的权限。
Table1有一个触发器,用于触发一个存储过程Table2_Refresh,它截断Table2并从Table1重建它。
我在某些地方读过触发器和存储过程自动作为调用者执行,因此使用调用者的权限。但是,20个用户中有19个能够更新Table1,触发器和SP执行正常。一个用户收到错误,告诉他无法找到Table2。
我知道我可以在SQL中放置一个'EXECUTE AS'行,但这种情况发生在多个地方,似乎这是用户的一个问题,所以我想尽可能在那里解决它。由于角色成员身份和权限相同,是否还有其他原因导致两个用户遇到与数据库不同的行为?
答案 0 :(得分:1)
角色和权限显然不完全相同......
他们是否以相同的方式登录(例如他们都使用集成安全性)?
答案 1 :(得分:0)
我建议检查该特殊登录使用的数据库用户的默认架构。 如果表模式是dba但数据库用户的默认模式是dbo,则查询表而不指定模式将失败。