2015-07-12 58 views
0

如果我有两个数据库“分贝”和“DBB”使用普通帐户,我知道我可以运行查询,如使用SQL Server 2012作为无登录用户的数据库连接?

SELECT * 
    FROM dbA.dbo.TableA a 
    JOIN dbB.dbo.TableB b ON a.columnA=b.columnB 

但我无法弄清楚如何将权限授予loginless帐户

USE dbA; 
CREATE USER [test_user] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[dbo] 
GRANT SELECT ON DATABASE::dbA TO [test_user]; 

当试图对另一个数据库上的无登录用户'test_user'提供选择权限时,我收到一个错误。

GRANT SELECT ON DATABASE::dbB TO [test_user]; 

是否有可能使用无登录用户进行数据库连接?如果是的话,授权声明应该如何设置正确的权限?

+0

@ M.Ali我不认为这很重要。我相信没有登录的用户只能在数据库级别存在。在另一个数据库中创建相同的用户是完全不同的帐户,并且不会被映射。 – DavidG

回答

1

没有登录的用户只能访问启用了访客用户的其他数据库。如果您有跨数据库要求,您可以考虑使用证书映射用户。代码见http://www.sommarskog.se/grantperm.html

0

用户存在于数据库级别。只有登录存在于服务器级别。

我相信你可以像这样创建分贝视图:

use dbA; 

create view dbB_TableB as 
select * 
from dbB.dbo.TableB; 

然后你就可以分配SELECT权限为分贝用户视图。

相关问题