2012-05-02 94 views
0

我在SQL 2005數據庫中創建了SQL用戶標識,角色和模式。我已經在此架構下創建了一個SQL視圖,可以從dbo架構中的表中進行選擇。但是,我不希望SQL用戶能夠從此表中選擇。SELECT對SQL 2005視圖的訪問權限對底層表的限制訪問

例如:

CREATE VIEW [MySchema].[vwMyView] 
AS 
SELECT 
    * 
FROM 
    dbo.MyTable 

用戶有權訪問MYSCHEMA視圖和可以查詢vwMyView,沒有任何問題。但是,他們也可以從dbo.MyTable中選擇。

如何限制所有訪問dbo.MyTable?如果我拒絕dbo模式的SELECT權限,則用戶無法從視圖中選擇。

+0

你有沒有試圖撤銷他們對視圖的訪問? REVOKE privilege_name ON object_name FROM {user_name | PUBLIC | role_name} – Brian

+0

我不想撤消他們對視圖的訪問權限,只有視圖使用的表。 –

回答

0
REVOKE select 
ON tablename 
FROM {user_name} 

只是撤銷選擇本身並不會撤銷其他權限。

然後在視圖上進行顯式授權選擇。不知道這是否會工作,因爲我從來沒有嘗試過這種方式,但值得一試。

+0

我不確定這是否解決了問題。 OP仍然希望用戶能夠從視圖中選擇,而不是直接從底層表中選擇。 –

+0

該聲明撤消視圖上的SELECT權限。 SQL用戶應該可以訪問來自視圖的SELECT,但不能訪問表。 –

+0

正確。我把桌子和視圖的要求劃掉了。編輯答案給一些嘗試。現在我很好奇,如果這將工作 – Brian