使用已經設定為 db_owner 角色執行 SELECT 指令仍出現沒有 SELECT 權限的錯誤,該如何排除?

本文將介紹使用已經設定為 db_owner 角色執行 SELECT 指令仍出現沒有 SELECT 權限的錯誤,該如何排除。

當您使用已經設定為 db_owner 角色執行 SELECT 指令仍出現沒有 SELECT 權限的錯誤(如下)。

 

   1:  Msg 229, Level 14, State 5, Line 1
   2:  The SELECT permission was denied on the object 'titles', database 'pubs', schema 'dbo'.

 

您可以嘗試於 Login 上按滑鼠右鍵選擇 Properties 來檢視設定。

 

image

 

發現在 Database Role 的部分勾選了【db_denydatareader】,這個固定資料庫角色會拒絕讀取所有資料庫中的任何使用者自訂資料表,由於安全性考量,拒絕的優先權最大,因此即便設定【 db_owner 】仍會被拒絕執行 SELECT 動作。

 

image

 

若您只是想要開放某個 Login 的 SELECT權限,可以賦予【 db_datareader】角色即可,若要允許可以更新資料,則可賦予【db_datawriter】角色。

 

image

 

 

【參考資料】