2013-07-05 124 views
1

我有一个由20位用户使用的数据库(SQL Server),这是同一安全角色的所有成员。该角色使他们能够插入,删除和更新到Table1,但他们对Table2没有权限。SQL Server中的触发器和存储过程安全性

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

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

我知道我可以在SQL中放置一个'EXECUTE AS'行,但这种情况发生在多个地方,看起来像是用户的问题,所以我想尽可能在​​那里解决它。由于角色成员和权限是相同的,所以两个用户会遇到与数据库不同的行为还有其他原因吗?

回答

1

的角色和权限是显然不相同......

难道他们以同样的方式记录(例如,是它们都使用集成安全性)?

0

我建议检查该特殊登录使用的数据库用户的默认模式。 如果表模式为dba,但数据库用户的默认模式为dbo,则查询表时未指定模式将会失败。