2016-07-29 90 views
0

我有一个用户在SQL Server Management Studio中设置了用户映射,因此他们只能访问'ReportServer'数据库。限制用户查看/访问默认数据库

当我通过微软Word连接到我的SQL Server中,我给出下面的选项数据库连接:

enter image description here

我不希望这个用户访问,甚至是能够看到master,tempdb或msdb数据库,并且我没有在该用户的用户映射中选择它们。我如何设置它,以便用户无法看到这些数据库?

回答

0

使用DENY查看..

DENY VIEW ANY DATABASE TO testuser; 

步骤一般包括..
1.创建登录的默认数据库中的所有数据库是登录
2.创建用户
3 .Deny view

DENY VIEW ANY DATABASE TO testuser; 

第一步:
//创建一个默认的数据库登录

1.USE [master] 
GO 
CREATE LOGIN loginame FROM WINDOWS WITH DEFAULT_DATABASE='testdb' 
GO 

第二步:
2.创建用户在所有数据库中..

use testdb 
create user username for loginname 

现在你可以将权限分配给该用户像读取,写入......默认情况下,该用户将只显示一个数据库。

第三步:

DENY VIEW ANY DATABASE TO testuser;--this should be repeated in all databases which you wish to hide from user.. 

如果你已位于现有login..Then您可以更改默认登录该用户像下面..

Exec sp_defaultdb @loginame='login', @defdb='testdb' 

参考文献:
https://www.mssqltips.com/sqlservertip/2995/how-to-hide-sql-server-user-databases-in-sql-server-management-studio/

+0

喜那里。这有助于摆脱msdb。但master和tempdb仍然存在。你提到我应该在所有我想隐藏的数据库中重复该代码,但是SQL Studio告诉我,我只能在master db中使用它。 – LeChuck

+0

创建登录,它应该是主DB。对于TempDB你不需要创建登录,默认情况下,所有用户都将登录。所以我建议创建Windows组的所有用户,您可以使用邮件合并和做这个东西。 – TheGameiswar