Sql 如何允许用户通过视图选择数据,但不限制对基础表的访问

Sql 如何允许用户通过视图选择数据,但不限制对基础表的访问,sql,sql-server-2012,Sql,Sql Server 2012,我有两个数据库DB1和DB2 DB1有一个名为“source”的源表 我在DB2中创建了一个具有公共访问权限的登录名“Test_user”。 我还在DB2中创建了一个名为“Test_view”的视图,该视图引用来自DB1.dbo.Source的数据 我怎样才能做到以下几点: 作为测试用户 从DB2.dbo.Test_视图中选择* 从DB1.dbo.Source中选择* 我们的结果如下: USE db1 GO -- Step 3 CREATE VIEW VW1 AS SELECT * FROM T

我有两个数据库DB1和DB2 DB1有一个名为“source”的源表 我在DB2中创建了一个具有公共访问权限的登录名“Test_user”。 我还在DB2中创建了一个名为“Test_view”的视图,该视图引用来自DB1.dbo.Source的数据

我怎样才能做到以下几点: 作为测试用户

从DB2.dbo.Test_视图中选择*

从DB1.dbo.Source中选择*

我们的结果如下:

USE db1
GO
-- Step 3
CREATE VIEW VW1
AS
SELECT *
FROM TBL1
-- Step 4
GRANT SELECT ON VW1 TO test_user

USE db2
GO
--Step 6
CREATE VIEW v2
AS
SELECT * FROM VW1

您的问题标题与您的帖子不匹配。您能否确认您想拒绝访问
DB1.Source
,但仍然允许通过
DB2.Test\u view
间接访问它?您知道什么是授权吗?是的..我想拒绝访问DB1。源代码,但仍然允许通过db2访问。ViewI创建了一个登录名“test\u login”我为登录名“test\u login”创建了一个用户“test\u user”,我创建了一个名为“test”的角色,并将“test\u user”添加到该角色中。我已将select和execute授予视图上的“test”角色。但是下面的代码仍然不起作用,从DB2.dbo.Test_视图中选择*,不起作用,这应该起作用,从DB1.dbo.Source中选择*,不起作用,这很好,有什么帮助吗??