创建只能查看一个数据库的用户,只能从中选择?

问题描述:

我们在SQL服务器上有好几个数据库。 我们想创建一个新的用户,可以看到数据库'c'但看不到剩下的数据库。创建只能查看一个数据库的用户,只能从中选择?

此用户应该只能从这个数据库中进行选择,而没有别的。
我一直在googleing和搜索一段时间,最近我发现是拒绝查看任何数据库,然后让他们成为数据库所有者。

但我不认为这会限制他们选择,除非有办法我可以 拒绝一切,除了选择数据库所有者?

在此先感谢您的帮助!顺便说一句,编辑:SQL Server 2008 R2。

编辑2:对不起,我原来的帖子并不清楚。我希望在登录时能够这样做,他们甚至不会看到其他数据库的名称,而不仅仅是他们无法访问它们。

谢谢。

  1. 创建服务器
  2. 用户将用户添加到给定数据库
  3. 授予只读访问数据库

    使用[大师] CREATE LOGIN [SomeUserName] WITH PASSWORD = N'someStr0ngP @提供ssword”,DEFAULT_DATABASE = [C],DEFAULT_LANGUAGE = [美国英语],CHECK_EXPIRATION = ON,CHECK_POLICY = ON GO

    USE并[c] CR EATE USER [SomeUserName对于登录[SomeUserName] WITH DEFAULT_SCHEMA = [DBO] GO

    EXEC sp_addrolemember N'db_datareader 'N'SomeUserName'

+1

请记住,在2008年全部用户被赋予无法带走的“公共”服务器级角色。如果你只希望他们看到一个数据库,并且你不能通过存储过程或其他中间层来限制他们的访问,那么你必须将所有其他数据库拒绝到公共角色(这可能会让其他人感到困惑)。 – 2012-04-18 22:29:23

+1

我可能会误解,或者我原来的帖子中可能只是不清楚。我的意思是用户不应该能够看到其他数据库,如果他们登录到管理工作室,其他数据库甚至不会显示出来。有了这个,他们仍然会出现,他们只是无法进入数据库,对不对? 有没有办法让它看不到数据库? – Kyle 2012-04-18 22:33:12

+2

“您需要从角色PUBLIC(SQL SERVER 2005起)中撤消权限'VIEW ANY DATABASE'”。我偷从[另一篇文章...](http://stackoverflow.com/questions/935018/hide-sql-database-from-management-studio)。在那里看看更多的信息。 – 2012-04-18 22:36:07

否认是默认的行为,当谈到许可所以如果你创建一个用户并将它添加到必要的db的db_datareader角色上,那么它将是唯一的权限。它不会是能够访问其它数据库

编辑:

use [master] 
GO 
DENY VIEW ANY DATABASE TO [login] 
GO 
use [master] 
GO 
DENY VIEW SERVER STATE TO [login] 
GO 

,将删除登录的abbility查看数据库。 然后去你想要他看到的一个,并让他拥有那个数据库

+0

对不起,我的帖子中不清楚。我试图做到这一点,所以他们甚至不会看到其他的基地,或他们的名字。不仅仅是他们无法访问它们。 感谢您的帮助。 – Kyle 2012-04-18 22:36:30

+0

好的,试试我的编辑 – Diego 2012-04-18 22:43:38

也许这会工作。

将用户添加到服务器并映射到正确的数据库。 从服务器中删除用户。

服务器将通知您 删除服务器用户不会删除与此登录关联的数据库用户。

单击确定,您将只允许用户访问一个数据库。

步骤-1:创建登录

步骤2:从登录删除所有DB查看权限

deny view any database to LogInName 

步骤3:给数据库的登录授权

alter authorization on database:: DataBaseName to LogInName 

注意:不需要用单引号指定用户名或数据库名称

+0

我不确定这个答案是否真的与这个问题有关。无论如何,这是错误的。 – 2014-06-24 15:35:58

+0

这是怎么回事:你说“撤销”,但你的命令是“拒绝”。这些是非常不同的东西。 'deny'将完全阻止用户查看任何数据库。 '撤销'会部分工作,也许......除了简单地将用户添加到数据库将无法工作。当他们没有“查看任何”权利时,他们必须成为所有者才能看到它。 – 2014-06-24 15:40:04

+0

我不知道你为什么把答案标记为负面@AndrewBarber ..任何方式,我不是一个SQL服务器怪胎的家伙..但它是为我工作......而答案只集中在已问过的问题。 ..为什么我googled .. – Moumit 2014-06-25 06:35:00