Sql-Server

拒絕 dbo 架構權限

  • February 14, 2017

我試圖拒絕特定使用者對 dbo 架構的所有權限,因為我只希望該使用者訪問特定架構。當我嘗試以下(使用 sa):

DENY CONTROL, ALTER ON SCHEMA :: dbo TO AppUser

我收到這條消息:

無法授予、拒絕或撤銷對 sa、dbo、實體所有者、information_schema、sys 或您自己的權限。

是否可以拒絕使用者的所有 dbo 架構權限?

**編輯:**我剛剛有了一個想法 - dbo 模式中有一些表和視圖歸公共所有(不是我的想法,我無法更改它們)。這可能是我收到消息的原因嗎?如果是這樣,有什麼辦法可以解決這個問題嗎?拒絕訪問 dbo 的目的是防止對這些表進行不必要的訪問。

**編輯:**我想我對公共角色感到困惑——我提到的表和視圖的實際所有者是 dbo,但公共角色具有 SELECT、INSERT、UPDATE 等權限。我嘗試在一個新數據庫上重現該消息,該數據庫具有與其他數據庫一樣具有公共角色權限的表,但這沒有顯示該消息 - 它是成功的,被拒絕的使用者無法再看到這些表。所以要回答我的問題,是的,這是可能的,但我不確定為什麼它對我不起作用。

重新啟動 Management Studio 修復了它。

看起來這是某種故障 - 出於某種原因,它就像我AppUser用來執行查詢一樣。我仔細檢查了一下,我肯定是使用 登錄的sa,所以我不確定發生了什麼。

當我嘗試更改新架構的權限時,我意識到,該架構之前已成功完成,現在給出了相同的消息。我嘗試刪除登錄並再次嘗試設置它,它給出了使用者仍在登錄的錯誤,儘管我關閉了除我目前與該sa帳戶一起使用的實例之外的所有 Management Studio 實例。我試圖使用這篇文章中的建議來終止會話,但它給出了一個關於沒有權限的錯誤(此時我再次仔細檢查了我確實在使用該sa帳戶)。最後,我也關閉了目前實例,以 as 重新登錄sa,並且它執行良好,因為 - 我可以在新模式和dbofor上授予/拒絕AppUser

引用自:https://dba.stackexchange.com/questions/164167