Kyl*_*yle 8 sql t-sql sql-server sql-server-2008 sql-server-2008-r2
我们在SQL服务器上有几个数据库.我们想创建一个新用户,可以看到数据库'c'但无法看到其余的数据库.
该用户应该只能从该数据库中进行选择,而不能进行任何其他操作.
我一直在谷歌搜索和搜索一段时间,我发现最接近的是拒绝查看任何数据库,然后使它们成为数据库所有者.
但我不认为这会限制它们选择,除非有一种方法我可以拒绝除数据库所有者上的select之外的所有内容吗?
在此先感谢您的帮助!
编辑:顺便说一句,SQL Server 2008 R2.
编辑2:对不起,我的原帖不清楚.我希望这样做,当他们登录时,他们甚至不会看到其他数据库的名称,而不仅仅是他们无法访问它们.
谢谢.
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'