视图的权限设置问题!

florence31 2012-12-25 03:07:29

有A 和 B两个DB 其中 A中有 视图 view_test 定义为:SELECT * FROM A.dbo.tbl_test
tbl_test为表,且在A数据库
问题:需要创建一个登录帐号 只能有 view_test的Select权限,无访问和操作 A.dbo.tbl_test的权限

之前设置过,肯定有办法设置,具体方法我忘记了。。。。!!貌似是靠权限映射之类的方法。。。
...全文
365 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
florence31 2012-12-25
  • 打赏
  • 举报
回复
OK。。可以结贴了。谢谢!!
开启时代 2012-12-25
  • 打赏
  • 举报
回复
在每个库中创建自己表的视图 ,然后如果要在其他库中用此视图 就在其他库中引用这个视图再创建一个新的视图。这样就无需基表的select 。 A基表(无需select)-->A视图(select)-->B视图(select) 这样就可以跨库隐藏基表。
florence31 2012-12-25
  • 打赏
  • 举报
回复
引用 19 楼 lixzhong 的回复:
不需要 只需要对视图分select权限就可以了 ,当然这个前提是基表和视图在同一库中。
可惜。。我最起码要多连接1个库。。。。
开启时代 2012-12-25
  • 打赏
  • 举报
回复
不需要 只需要对视图分select权限就可以了 ,当然这个前提是基表和视图在同一库中。
florence31 2012-12-25
  • 打赏
  • 举报
回复
引用 17 楼 lixzhong 的回复:
视图 是有权限select表? 这是谁告诉你的?
那如果我视图中引用了tbl_1的表。。那么我登录的帐号是否需要有对tbl_1的SELECT权限?
开启时代 2012-12-25
  • 打赏
  • 举报
回复
视图 是有权限select表? 这是谁告诉你的?
开启时代 2012-12-25
  • 打赏
  • 举报
回复
感觉楼主 对安全太重视了 有点草木皆兵了 没那么恐怖。把权限搞好就行了
florence31 2012-12-25
  • 打赏
  • 举报
回复
引用 14 楼 lixzhong 的回复:
晕 没有权限 即使知道表名 又奈何? 数据库名字都不让人知道 ? 知道又如何?
问题是为了视图。是有权限SELECT表的啊。。知道表名能查我表里的所有数据啊。
开启时代 2012-12-25
  • 打赏
  • 举报
回复
晕 没有权限 即使知道表名 又奈何? 数据库名字都不让人知道 ? 知道又如何?
florence31 2012-12-25
  • 打赏
  • 举报
回复
临时。。我先将登录名的查看所有数据库的权限关掉了。。。。只要不知道我的表名 无法查看我的数据。。但是。。还是不安全。
florence31 2012-12-25
  • 打赏
  • 举报
回复
引用 8 楼 lixzhong 的回复:
这是在折腾啥呢? A库里的表 为啥要在B库里做视图去访问 ,为啥不是在A库里做视图是访问呢?
因为我也不想给对方知道我的DB名称。。。而且。实际上我的视图由2个DB的 12张表组成。
florence31 2012-12-25
  • 打赏
  • 举报
回复
引用 9 楼 DBA_Huangzj 的回复:
1、SQLServer无法隐藏数据库。 2、deny这个登录名对表的select。 3、grant给这个登录名对视图的select权限。试试
我试过不行。。包括登录名有权限 角色有权限 架构无权限等各种组合。。。。不行。、。
开启时代 2012-12-25
  • 打赏
  • 举报
回复
想要隐藏列 没必要跑其他库里做视图啊 ,在基表库里还不是一样达到隐藏效果。
發糞塗牆 2012-12-25
  • 打赏
  • 举报
回复
1、SQLServer无法隐藏数据库。 2、deny这个登录名对表的select。 3、grant给这个登录名对视图的select权限。试试
开启时代 2012-12-25
  • 打赏
  • 举报
回复
这是在折腾啥呢? A库里的表 为啥要在B库里做视图去访问 ,为啥不是在A库里做视图是访问呢?
florence31 2012-12-25
  • 打赏
  • 举报
回复
。。。额但是登录后的数据库列表中会显示所有的数据库。。。而且知道表名就能SELECT。。。。因为最终设置的视图我不希望能让他看到表中的所有字段 只希望显示部分。
發糞塗牆 2012-12-25
  • 打赏
  • 举报
回复
其实你只要不给别人查看视图的定义,那么他就不知道视图引用了什么表,也就不会有控制表的可能了。
florence31 2012-12-25
  • 打赏
  • 举报
回复
我还是没有听明白。。。我是纯后台的连接,所以不牵涉到程序与创建的架构。。都是默认DBO, 还是无法不开放tbl_test的SELECT权限。。。否则无法查询view_test。
發糞塗牆 2012-12-25
  • 打赏
  • 举报
回复
2005以后,架构的重要性已经非常强。这里的架构最好使用你程序中创建表时的架构。你那个应该要先对登录名赋予能够访问两个库的权限。
florence31 2012-12-25
  • 打赏
  • 举报
回复
GRANT select ON OBJECT::dbo.view_test TO (登录名) ?? 需要创建架构吗?还是用DBO? DBO的话貌似没用还是报 拒绝了对对象 'tbl_test' (数据库 'B',架构 'dbo')的 SELECT 权限。 补充一下。。。tbl_test是在B库。。上面写错了。
加载更多回复(2)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧