為便於管理數據庫中的權限,SQL Server 提供了若干“角色”,這些角色是用於分組其他主體的安全主體。它們類似於
Microsoft Windows
操作
系統中的組。數據庫級角色的權限作用域為數據庫范圍。SQL Server
中有兩種類型的數據庫級角色:數據庫中預定義的“固定數據庫角色”和您可以創建的“靈活數據庫角色”。
固定數據庫角色是在數據庫級別定義的,並且存在於每個數據庫中。db_owner 和 db_securityadmin 數據庫角色的成員可以管理固定數據庫角色成員身份。但是,只有
db_owner 數據庫角色的成員能夠向db_owner 固定數據庫角色中添加成員。msdb
數據庫中還有一些特殊用途的固定數據庫角色。您可以向數據庫級角色中添加任何數據庫帳戶和其他SQL Server
角色。固定數據庫角色的每個成員都可向同一個角色添加其他登錄名。
數據庫級別的角色名稱及說明
db_owner 固定數據庫角色的成員可以執行數據庫的所有配置和維護活動,還可以刪除數據庫。
db_securityadmin 固定數據庫角色的成員可以修改角色成員身份和管理權限。向此角色中添加主體可能會導致意外的權限升級。
db_accessadmin 固定數據庫角色的成員可以為 Windows 登錄名、Windows 組和 SQL Server
登錄名添加或刪除數據庫訪問權限。
db_backupoperator 固定數據庫角色的成員可以備份數據庫。
db_ddladmin 固定數據庫角色的成員可以在數據庫中運行任何數據定義語言 (DDL) 命令。
db_datawriter 固定數據庫角色的成員可以在所有用戶表中添加、刪除或更改數據。
db_datareader 固定數據庫角色的成員可以從所有用戶表中讀取所有數據。
db_denydatawriter 固定數據庫角色的成員不能添加、修改或刪除數據庫內用戶表中的任何數據。
db_denydatareader 固定數據庫角色的成員不能讀取數據庫內用戶表中的任何數據。
有關數據庫級固定角色權限的特定信息,請參閱固定數據庫角色的權限(數據庫引擎)。
msdb 角色名稱及說明
db_ssisadmin
db_ssisoperator
db_ssisltduser
這些數據庫角色的成員可以管理和使用SSIS。從早期版本升級的 SQL Server 實例可能包含使用 Data
Transformation Services (DTS)(而不是 SSIS)命名的舊版本角色。有關詳細信息,請參閱使用 Integration Services 角色。
dc_admin
dc_operator
dc_proxy
這些數據庫角色的成員可以管理和使用數據收集器。有關詳細信息,請參閱數據收集器的安全性。
PolicyAdministratorRole
db_ PolicyAdministratorRole
數據庫角色的成員可以對基於策略的管理策略和條件執行所有配置和維護活動。有關詳細信息,請參閱使用基於策略的管理來管理服務器。
ServerGroupAdministratorRole
ServerGroupReaderRole
這些數據庫角色的成員可以管理和使用注冊的服務器組。有關詳細信息,請參閱創建服務器組。
重要提示:
db_ssisadmin 角色和 dc_admin
角色的成員也許可以將其權限提升到sysadmin。之所以會發生此權限提升,是因為這些角色可以修改Integration Services 包,而 SQL
Server 可以使用SQL Server 代理的sysadmin 安全上下文來執行Integration Services
包。若要防止在運行維護計划、數據收集組和其他 Integration Services 包時出現此權限提升,請將運行包的 SQL Server
代理作業配置為使用擁有有限權限的代理帳戶,或只將 sysadmin 成員添加到 db_ssisadmin 和dc_admin 角色。
使用服務器級角色
sp_helpdbfixedrole (Transact-SQL) → 元數據 → 返回固定數據庫角色的列表。
sp_dbfixedrolepermission (Transact-SQL) → 元數據 → 顯示固定數據庫角色的權限。
sp_helprole (Transact-SQL) → 元數據 → 返回當前數據庫中有關角色的信息。
sp_helprolemember (Transact-SQL) → 元數據 → 返回有關當前數據庫中某個角色的成員的信息。
sys.database_role_members (Transact-SQL) → 元數據 → 為每個數據庫角色的每個成員返回一行。
IS_MEMBER (Transact-SQL) → 元數據 → 指示當前用戶是否為指定 Microsoft Windows 組或
Microsoft SQL Server 數據庫角色的成員。
CREATE ROLE (Transact-SQL) → 命令 → 在當前數據庫中創建新的數據庫角色。
ALTER ROLE (Transact-SQL) → 命令 → 更改數據庫角色的名稱。
DROP ROLE (Transact-SQL) → 命令從數據庫中刪除角色。
sp_addrole (Transact-SQL) → 命令 → 在當前數據庫中創建新的數據庫角色。
sp_droprole (Transact-SQL) → 命令 → 從當前數據庫中刪除數據庫角色。
sp_addrolemember (Transact-SQL) → 命令 →
為當前數據庫中的數據庫角色添加數據庫用戶、數據庫角色、Windows 登錄名或 Windows 組。
sp_droprolemember (Transact-SQL) → 命令 → 從當前數據庫的 SQL Server
角色中刪除安全帳戶。
public 數據庫角色
每個數據庫用戶都屬於public 數據庫角色。如果未向某個用戶授予或拒絕對安全對象的特定權限時,該用戶將繼承授予該對象的public 角色的權限