需求
sqlserver新建一个的登录名只能看到一个视图,应该如何做?
视图是跨库的,描述如下
服务器环境
现有sqlserver服务器中两个数据库DB1,DB2
DB1中的视图v_task
读取了两个数据库的内容,像这样
create view v_task as
select a.* from DB1.dbo.table1 a, DB2.dbo.table2 b
where a.id=b.id
实现
新登录名 user_demo
只有v_task
视图的select
权限
新建登录名 user_demo,并在用户映射里添加 DB1的用户db1_user,并为db1_user分配v_task的select
权限
问题
select * from DB1.dbo.v_task
报错如下
服务器主体 "user_demo" 无法在当前安全上下文下访问数据库 "DB2"。
必须 分配DB2.dbo.table2的读权限,我不希望此登录名查看DB2.dbo.table2的内容。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…