【问题标题】:SQL Server user lost access to viewSQL Server 用户失去查看权限
【发布时间】:2022-01-22 20:16:06
【问题描述】:

我遇到过用户意外失去对特定视图的访问权限。 我昨天掉线了,后来又重新创建了视图,这可能是原因吗?

【问题讨论】:

  • 如果您删除了视图,则所有已授予从该视图读取的权限都将消失。重新创建后,您需要再次将这些权限授予相应的用户/组
  • “我昨天掉线了,后来又重新创建了视图,这可能是原因吗?” 是的。如果 USER 之前有对 VIEW 的显式访问,而您 DROPped 了它,则您使用它删除了该显式访问。如果您没有将其添加回来,除非您再次 GRANT 它,否则他们将没有显式访问权限。
  • 来自DROP VIEW (Transact-SQL) 文档:“当您删除视图时,视图的定义和有关视图的其他信息将从系统目录中删除。视图的所有权限也将被删除。”
  • “是否有可能改变这种行为?” 不,因为这是设计使然。另外,保留不存在的对象的权限没有任何意义。
  • 不要删除和创建视图,而是使用ALTER VIEW。这将保留权限。

标签: sql-server


【解决方案1】:

如 cmets 中所述,删除数据库对象时也会删除对象权限。重新创建对象后需要重新授予权限。

考虑使用 ALTER VIEW 而不是 DROP/CREATE。 ALTER 将保留现有的查看权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多