创建只能查看一个数据库的用户,只能从中选择?
我们在SQL服务器上有好几个数据库。 我们想创建一个新的用户,可以看到数据库'c'但看不到剩下的数据库。创建只能查看一个数据库的用户,只能从中选择?
此用户应该只能从这个数据库中进行选择,而没有别的。
我一直在googleing和搜索一段时间,最近我发现是拒绝查看任何数据库,然后让他们成为数据库所有者。
但我不认为这会限制他们选择,除非有办法我可以 拒绝一切,除了选择数据库所有者?
在此先感谢您的帮助!顺便说一句,编辑:SQL Server 2008 R2。
编辑2:对不起,我原来的帖子并不清楚。我希望在登录时能够这样做,他们甚至不会看到其他数据库的名称,而不仅仅是他们无法访问它们。
谢谢。
- 创建服务器
- 用户将用户添加到给定数据库
-
授予只读访问数据库
使用[大师] 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'
否认是默认的行为,当谈到许可所以如果你创建一个用户并将它添加到必要的db的db_datareader角色上,那么它将是唯一的权限。它不会是能够访问其它数据库
编辑:
use [master]
GO
DENY VIEW ANY DATABASE TO [login]
GO
use [master]
GO
DENY VIEW SERVER STATE TO [login]
GO
,将删除登录的abbility查看数据库。 然后去你想要他看到的一个,并让他拥有那个数据库
也许这会工作。
将用户添加到服务器并映射到正确的数据库。 从服务器中删除用户。
服务器将通知您 删除服务器用户不会删除与此登录关联的数据库用户。
单击确定,您将只允许用户访问一个数据库。
步骤-1:创建登录
步骤2:从登录删除所有DB查看权限
deny view any database to LogInName
步骤3:给数据库的登录授权
alter authorization on database:: DataBaseName to LogInName
注意:不需要用单引号指定用户名或数据库名称
我不确定这个答案是否真的与这个问题有关。无论如何,这是错误的。 – 2014-06-24 15:35:58
这是怎么回事:你说“撤销”,但你的命令是“拒绝”。这些是非常不同的东西。 'deny'将完全阻止用户查看任何数据库。 '撤销'会部分工作,也许......除了简单地将用户添加到数据库将无法工作。当他们没有“查看任何”权利时,他们必须成为所有者才能看到它。 – 2014-06-24 15:40:04
我不知道你为什么把答案标记为负面@AndrewBarber ..任何方式,我不是一个SQL服务器怪胎的家伙..但它是为我工作......而答案只集中在已问过的问题。 ..为什么我googled .. – Moumit 2014-06-25 06:35:00
请记住,在2008年全部用户被赋予无法带走的“公共”服务器级角色。如果你只希望他们看到一个数据库,并且你不能通过存储过程或其他中间层来限制他们的访问,那么你必须将所有其他数据库拒绝到公共角色(这可能会让其他人感到困惑)。 – 2012-04-18 22:29:23
我可能会误解,或者我原来的帖子中可能只是不清楚。我的意思是用户不应该能够看到其他数据库,如果他们登录到管理工作室,其他数据库甚至不会显示出来。有了这个,他们仍然会出现,他们只是无法进入数据库,对不对? 有没有办法让它看不到数据库? – Kyle 2012-04-18 22:33:12
“您需要从角色PUBLIC(SQL SERVER 2005起)中撤消权限'VIEW ANY DATABASE'”。我偷从[另一篇文章...](http://stackoverflow.com/questions/935018/hide-sql-database-from-management-studio)。在那里看看更多的信息。 – 2012-04-18 22:36:07