当前位置:  开发笔记 > 程序员 > 正文

当基表位于不同的数据库中时,在视图而非基表上授予选择

如何解决《当基表位于不同的数据库中时,在视图而非基表上授予选择》经验,为你挑选了3个好方法。

我有一个视图,它从不同数据库中的表中选择行.我想授予对视图的select访问权限,但不能直接访问基表.视图有一个where子句限制行数.

我可以将select授予视图而不是基表,还是需要切换到存储过程?我宁愿不采用后一种方式.



1> James Orr..:
GRANT SELECT ON [viewname] TO [user]

应该这样做.


实际上,用户无权访问视图中引用的基表,因此我收到一条错误消息,指出我在当前安全上下文中没有访问权限.

2> RoadWarrior..:

当您在其中一条评论中声明所讨论的表位于不同的数据库中时,则应用所有权链接.我怀疑某处链条有断裂 - 检查该链接是否有详细信息.



3> 小智..:

我也有这个问题.我使用了上面提到的链接信息,并找到了快速解决方案.如果你有不同的模式,可以说测试,并创建用户utest,模式的所有者测试和意见在架构中测试你有看法vTestView的基础上,从模式表DBO,而从中选择你会得到上述的错误-没有访问基础对象.这对我来说已经足够执行声明了

ALTER AUTHORIZATION ON test.vTestView TO dbo;

这意味着我改变的所有权vTextView从架构它属于(测试),以数据库用户DBO,模式的所有者DBO.之后,如果没有任何其他权限,用户utest将能够从test.vTestView访问数据

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有