1、錯誤描述
消息 300,級別 14,狀態 1,第 1 行
拒絕了對對象 'server' (數據庫 'master')的 VIEW SERVER STATE 權限。
消息 297,級別 16,狀態 1,第 1 行
用戶沒有執行此操作的權限。
2、原因描述
一個只具有public服務器角色的用戶,想要查詢系統的動態視圖,報出的錯誤;
3、解決辦法
方法一:如果可以給用戶sysadmin服務器角色的話,直接賦予即可(但是這種情況大部分公司都是不允許的)
方法二:直接賦予某個用戶view server state的權限
命令:grant view server state to chaxun
取消權限的腳本如下:(下面2條SQL的任何一條都可以實現)
revoke view server state to chaxun ---撤銷該權限
deny view server state to chaxun ---拒絕該權限
方法三:賦予public角色view server state的權限
注:賦予public角色這個權限后,所有具有public角色的用戶都可以查看服務器級別的資源了(系統視圖,系統存儲過程等)
命令:grant view server state to public
取消權限的腳本如下:(下面2條SQL的任何一條都可以實現)
revoke view server state to public ---撤銷該權限
deny view server state to public ---拒絕該權限
Tips:
revoke和deny取消權限的區別是什么?
答:
deny:指的是拒絕某一用戶的某一權限,在服務器權限的系統視圖(sys.server_permissions)里不會刪除該用戶的權限這一行記錄,只是把狀態改為了D
revoke:指的是撤銷某用戶的某一權限,在服務器權限的系統視圖(sys.server_permissions)里會刪除該用戶的權限這一行記錄