SQL Server 用户失去查看权限

Posted

技术标签:

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

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

【问题讨论】:

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

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

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

【讨论】:

以上是关于SQL Server 用户失去查看权限的主要内容,如果未能解决你的问题,请参考以下文章

如何正确查看SQL Server超级用户权限

SQL Server中授予用户查看对象定义的权限

SQL Server中授予用户查看对象定义的权限

SQL Server用户权限问题

SQL Server数据库新建拥有部分查看操作权限的用户

z怎么查看docker 下sql server 用户名