【问题标题】:Trigger and stored procedure security in SQL ServerSQL Server 中的触发器和存储过程安全性
【发布时间】:2013-07-05 15:10:23
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql


    【解决方案1】:

    角色和权限很明显不一样...

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-25
        • 2023-03-29
        • 1970-01-01
        • 2012-04-22
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多