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

Kyl*_*yle 8 sql t-sql sql-server sql-server-2008 sql-server-2008-r2

我们在SQL服务器上有几个数据库.我们想创建一个新用户,可以看到数据库'c'但无法看到其余的数据库.

该用户应该只能从该数据库中进行选择,而不能进行任何其他操作.
我一直在谷歌搜索和搜索一段时间,我发现最接近的是拒绝查看任何数据库,然后使它们成为数据库所有者.

但我不认为这会限制它们选择,除非有一种方法我可以拒绝除数据库所有者上的select之外的所有内容吗?

在此先感谢您的帮助!

编辑:顺便说一句,SQL Server 2008 R2.

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

谢谢.

Rus*_*Fox 6

1)在服务器上创建用户

2)将用户添加到给定数据库

3)授予对数据库的只读访问权限

USE [master]
CREATE LOGIN [SomeUserName] WITH PASSWORD=N'someStr0ngP@ssword', DEFAULT_DATABASE=[c], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=ON, CHECK_POLICY=ON
GO

USE [c]
CREATE USER [SomeUserName] FOR LOGIN [SomeUserName] WITH DEFAULT_SCHEMA=[dbo]
GO

EXEC sp_addrolemember N'db_datareader', N'SomeUserName'
Run Code Online (Sandbox Code Playgroud)

  • "你需要从角色PUBLIC(SQL SERVER 2005以后)撤销权限'查看任何数据库'".我偷了[另一篇帖子......](http://stackoverflow.com/questions/935018/hide-sql-database-from-management-studio).看看那里了解更多信息. (2认同)