首先我們來闡述服務器(實例級別)的權限,實例級別和數據庫級別權限的最大不同在于:實例級別的權限是直接授權給登錄名,而數據庫級別的全顯示授予數據庫用戶的,然后數據庫用戶再與登錄名匹配。(再SqlServer中,登錄名和用戶是兩個概念,登錄名用于登錄到數據庫實例,而用戶位于數據庫之內,用于和登錄名匹配)
舉例:
--指定登錄名為dbtester,并且創建test數據庫中的用戶tester1 execute sp_grantdbaccess ‘dbtester’,'tester1'
在服務器(實例)范圍內,對于不同的對象也可以授予不同的權限,主要有以下幾種:端點,登錄名,高可用性組,自定義服務器角色,固定服務器角色。利用sys.server_PRincipals和sys.server_permissions 這兩個視圖可以查看已經被授予的權限。
示例:
其中我們要注意,Control Server 授予用戶超級管理員的權限,可以讓用戶擁有對SqlServer的最高控制權,所以一般不要授予這個權限。
重點介紹一下固定服務器的角色,一共是九個分別是:
sysadmin 執行SQL Server中的任何動作,也是對任何數據庫的任何操作的權限。
serveradmin 配置服務器設置,并可使用SHUTDOWN來停止實例的權限。
setupadmin 向該服務器角色中添加其他登錄,添加、刪除或配置鏈接的服務器,執行一些系統過程,如sp_serveroption。
securityadmin 用于管理登錄名、讀取錯誤日志和創建數據庫許可權限的登錄名,可以執行關于服務器訪問和安全的所有動作。
processadmin 管理SQL Server進程,在實例中殺死其他用戶進程的權限。
dbcreator 創建和修改數據庫
diskadmin 管理物理數據庫的權限。 bulkadmin
向數據庫批量插入數據的權限(SqlServer2005中被添加進來)
public
本身不授予其他成員任何權限。只有連接權限。
固定數據庫角色在數據庫層上進行定義,因此它們存在于屬于數據庫服務器的每個數據庫中。列出了所有的固定數據庫角色。
db_owner 可以執行數據庫中技術所有動作的用戶
db_accessadmin 可以添加、刪除用戶的用戶
db_datareader 可以查看所有數據庫中用戶表內數據的用戶
db_datawriter 可以添加、修改或刪除所有數據庫中用戶表內數據的用戶
db_ddladmin 可以在數據庫中執行所有DDL操作的用戶
db_securityadmin 可以管理數據庫中與安全權限有關所有動作的用戶
db_backOperator 可以備份數據庫的用戶(并可以發布DBCC和CHECKPOINT語句,這兩個語句一般在備份前都會被執行)
db_denydatareader 不能看到數據庫中任何數據的用戶
db_denydatawriter 不能改變數據庫中任何數據的用戶
參考:http://www.cnblogs.com/dannyli/archive/2012/09/18/2690740.html
新聞熱點
疑難解答