2010-05-25 42 views
1

我有一個數據庫,我需要連接並從中進行選擇。我有一個SQL登錄,我們稱之爲myusername。當我用下面,沒有SELECT權限顯示出來:SQL Select權限

SELECT * FROM fn_my_permissions ('dbo.mytable', 'OBJECT') 
GO 

有好幾次我試過的東西,如:

USE mydatabase 
GO 

GRANT SELECT TO myusername 
GO 

GRANT SELECT ON DATABASE::mydatabase TO myusername 
GO 

GRANT SELECT ON mytable TO myusername 
GO 

報告說,查詢成功執行,但從來沒有在第一個查詢有什麼區別。我缺少授予數據庫級別選擇權限的簡單方法。

作爲一個說明,我做了兩次確認這是正確的用戶,正確的數據庫,並且我已經嘗試授予表級選擇權限。到目前爲止,我不斷收到錯誤:

SELECT permission denied on object 'mytable', database 'mydatabase', schema 'dbo'. 

任何想法我失蹤?提前致謝。

編輯/ UPDATE:

在右鍵單擊SQL用戶在SQL Server Management Studio的2008年,我發現每一個數據庫角色檢查,包括db_denydatareader和擁有db_datareader ......可能這會阻止我的授予權限的能力在數據庫級別?如果是這樣,db_denydatareader的目的是什麼?對我來說,在查詢權限時無法查看'DENY'似乎很愚蠢。

摘要: 果然,這已修復它。

+0

你應該發佈你的編輯/更新爲接受的答案=) – ajdams 2010-05-25 21:25:39

+0

你需要你的dba來修復你的權限。 – HLGEM 2010-05-25 21:27:33

回答

3

在SSMS中 - 在數據庫 - > mydatabase - >安全 - >用戶 - > myusername上,右鍵單擊用戶名,選擇屬性。在數據庫角色成員身份下,確保db_denydatareader沒有被選中,因爲這將覆蓋您授予的任何權限。

知道這是簡單的。 :)

0

您是否嘗試過使用該SQL用戶帳戶重新連接?