同一个数据库服务器,里面有CURR数据库,和HIS数据库,双方表一致,比如都有表A现在在CURR建立一个视图
CREATE VIEW V_A AS select * from A;在CURR建立一个用户reader,只授予对V_A的SELECT权限以上都没有问题,reader只能访问视图,不能访问实际表好了,现在要建立跨CURR和HIS的视图
在CURR修改这个视图
ALTER VIEW V_A AS select * from HIS.dbo.A UNION ALL select * from A;发现reader没法进行SELECT * FROM V_A了请问各位,怎么样实现只允许访问视图,不能访问任何实际表的授权?(跨数据库情况下)

解决方案 »

  1.   

    我想先问一下楼主,在CURR数据库里,reader这个用户是什么角色?也就是说:
    实例-》安全性-》登录名-》reader-》属性-》用户映射。与CURR库和HIS库的映射后的用户权限都分别是什么?
      

  2.   

    可以试着把reader用户也加入到his中
      

  3.   

    电脑有问题,无法引用,郁闷了
    我查了一下,网上说要打开数据库的所有权链,我全部打开后,还是不行,太郁闷了
    http://de.cel.blog.163.com/blog/static/514512362011410261429/不知道各位看看哪个地方容易遗漏?我试了半天也不行
    我的做法:
    先配置数据库sp_configure打开数据库服务器的跨所有权链,再reconfigure生效
    然后打开涉及到的两个数据库的所有权链
    alter database curr set db_chaining on
    alter database his  set db_chaining on然后重建dbreader用户,映射到curr和his的dbo架构最后,还是没用,我吐血了要