為了輕鬆管理資料庫中的許可權,SQL Server 提供數個角色,這些 角色 是將其他主體分組的安全性主體。 它們就像Microsoft Windows作系統中的 群組 。 資料庫層級角色的許可權範圍涵蓋整個資料庫。
SQL Server 中有兩種類型的資料庫層級角色:在資料庫中預先定義的 固定資料庫角色 ,以及您可以建立 的彈性資料庫角色 。
固定資料庫角色定義於資料庫層級,並存在於每個資料庫中。 db_owner資料庫角色的成員可以管理固定資料庫角色成員資格。 msdb 資料庫中也有一些特殊用途的固定資料庫角色。
您可以將任何資料庫帳戶和其他 SQL Server 角色新增至資料庫層級角色。 固定資料庫角色的每個成員都可以將其他登入新增至該角色。
這很重要
請勿將具彈性資料庫角色新增為固定角色成員。 這可能會導致非預期的權限提升。
下表顯示固定資料庫層級角色及其功能。 這些角色存在於所有資料庫中。
| 資料庫層級角色名稱 | 說明 |
|---|---|
| db_owner | db_owner固定資料庫角色的成員可以在資料庫上執行所有組態和維護活動,也可以卸除資料庫。 |
| db_securityadmin | db_securityadmin固定資料庫角色的成員可以修改角色成員資格和管理許可權。 將主體新增至此角色可能會導致非預期的權限升級。 |
| db_accessadmin | db_accessadmin固定資料庫角色的成員可以新增或移除對 Windows 登入、Windows 群組和 SQL Server 登入資料庫的存取權。 |
| db_backupoperator | db_backupoperator固定資料庫角色的成員可以備份資料庫。 |
| db_ddladmin | db_ddladmin固定資料庫角色的成員可以在資料庫中執行任何資料定義語言 (DDL) 命令。 |
| db_datawriter | db_datawriter固定資料庫角色的成員可以在所有用戶數據表中新增、刪除或變更數據。 |
| db_datareader | db_datareader固定資料庫角色的成員可以從所有用戶數據表讀取所有數據。 |
| db_denydatawriter | db_denydatawriter固定資料庫角色的成員無法新增、修改或刪除資料庫中用戶數據表中的任何數據。 |
| db_denydatareader | db_denydatareader固定資料庫角色的成員無法讀取資料庫中用戶數據表中的任何數據。 |
msdb 角色
msdb 資料庫包含下表所示的特殊用途角色。
| msdb 角色名稱 | 說明 |
|---|---|
db_ssisadmindb_ssisoperator db_ssisltduser |
這些資料庫角色的成員可以管理和使用 SSIS。 從舊版升級的 SQL Server 實例可能包含使用資料轉換服務 (DTS) 而不是 SSIS 來命名的舊版角色。 如需詳細資訊,請參閱 Integration Services 角色(SSIS 服務)。 |
dc_admindc_operator dc_proxy |
這些資料庫角色的成員可以管理和使用數據收集器。 如需詳細資訊,請參閱 數據收集。 |
| PolicyAdministratorRole | db_ PolicyAdministratorRole 資料庫角色的成員可以在原則式管理原則和條件上執行所有設定和維護活動。 如需詳細資訊,請參閱 使用原則式管理來管理伺服器。 |
|
ServerGroupAdministratorRole ServerGroupReaderRole |
這些資料庫角色的成員可以管理及使用已註冊的伺服器群組。 |
| dbm_monitor | 當第一個資料庫在資料庫鏡像監視器中註冊時,於msdb資料庫中建立。 在系統管理員將使用者指派給角色之前, dbm_monitor 角色沒有成員。 |
這很重要
db_ssisadmin角色和dc_admin角色的成員可以將其許可權提升為系統管理員。 這種特權提升可能會發生,因為這些角色可以修改 Integration Services 套件,而這些套件能透過 SQL Server Agent 使用 SQL Server 的系統管理員安全性內容執行。 若要在執行維護計劃、數據收集組和其他 Integration Services 套件時防範此特權提升,請設定執行封裝的 SQL Server Agent 作業,以使用具有有限許可權的 Proxy 帳戶,或只將系統管理員成員新增至db_ssisadmin和dc_admin角色。
使用 Database-Level 角色
下表說明使用資料庫層級角色的命令、檢視和函式。
| 特徵 / 功能 | 類型 | 說明 |
|---|---|---|
| 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 角色中移除安全性帳戶。 |
公用資料庫角色
每個資料庫用戶都屬於 公用 資料庫角色。 當用戶未被授予或拒絕特定的安全物件之許可權時,該用戶將繼承授予該物件上公用的許可權。