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