MSSQL:只允许阅读某些视图的有限帐户?

问题描述:

如何创建仅允许读取特定数据库的某些视图的MS SQL服务器用户?MSSQL:只允许阅读某些视图的有限帐户?

下面是一个脚本,它创建一个新用户并给他在特定视图上仅选择权限。

USE [master] 
GO 
CREATE LOGIN [LimitedUser] WITH PASSWORD=N'testPass', 
      DEFAULT_DATABASE=[master], 
      CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
GO 
USE [TestDB] 
GO 
CREATE USER [LimitedUser] FOR LOGIN [LimitedUser] 
GO 
use [TestDB] 
GO 
GRANT SELECT ON [dbo].[myView] TO [LimitedUser] 
GO 

编辑

而不是做这个特定用户的你可能要考虑使用替代的作用。

USE [TestDB] 
GO 
CREATE ROLE [LimitedRole] 
GO 
GRANT SELECT ON [dbo].[TestView] TO [LimitedRole] 
GO 
EXEC sp_addrolemember N'LimitedRole', N'LimitedUser' 
GO 

,如果你有一个Windows Authenitcation模式多个用户,例如,你可能有很多用户通过这种方式,都可以被授权访问这个角色。通过这种方式添加/删除视图,您不必触碰每个用户。

+0

乔希:好答案。就像来自无辜旁观者的奇怪查询一样,有没有办法通过创建登录GUI界面以相同的路线结束? – TheTXI 2009-04-14 13:43:47

这样做的诀窍是不给任何明确的公共角色的权限。每个用户都是不可撤销的角色的成员,因此无法阻止任何DB的用户拥有您向Public提供的任何权利。

除此之外,您只需将用户添加到相应的数据库,并只给他们权利,你有兴趣的对象