2009-04-14 73 views

回答

11

下面是一個腳本,它創建一個新用戶並給他在特定視圖上僅選擇權限。

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

2

這樣做的訣竅是不給任何明確的公共角色的權限。每個用戶都是不可撤銷的角色的成員,因此無法阻止任何DB的用戶擁有您向Public提供的任何權利。

除此之外,您只需將用戶添加到相應的數據庫,並只給他們權利,你有興趣的對象