資料庫層級角色

為了輕鬆管理資料庫中的權限,SQL Server 提供了幾個「角色」(Role),這些角色是分組其他主體的安全性主體。它們就像是 Microsoft Windows 作業系統中的群組。資料庫層級角色的權限範圍為整個資料庫。 

SQL Server 中有兩種資料庫層級角色類型:在資料庫中預先定義的「固定資料庫角色」(Fixed Database Role) 以及您可以建立的「彈性資料庫角色」(Flexible Database Role)。

固定資料庫角色義於資料庫層級,並存在每個資料庫中。db_ownerdb_securityadmin 資料庫角色的成員可以管理固定資料庫角色的成員資格。但是,只有 db_owner 資料庫角色的成員可以將成員加入 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 固定資料庫角色的成員不能讀取資料庫中使用者資料表的任何資料。

如需有關資料庫層級固定角色權限的特定資訊,請參閱<固定資料庫角色的權限 (Database Engine)>。

msdb 角色

msdb 資料庫含有下表所示的特殊用途角色。

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

這些資料庫角色的成員可以管理和使用已註冊的伺服器群組。如需詳細資訊,請參閱<建立伺服器群組>。

dbm_monitor

在「資料庫鏡像監視器」中註冊第一個資料庫時,於 msdb 資料庫中建立。新的 dbm_monitor 角色沒有任何成員,必須由系統管理員指派使用者給該角色。

重要事項重要事項

db_ssisadmin 角色和 dc_admin 角色的成員可以將其權限提高為 sysadmin。之所以能夠進行此權限提高,是因為這些角色可以修改 Integration Services 封裝,而且 SQL Server 可藉由使用 SQL Server Agent 的 sysadmin 安全性內容來執行 Integration Services 封裝。若要在執行維護計畫、資料收集組和其他 Integration Services 封裝時預防此權限提高,請將執行封裝的 SQL Server Agent 作業設為使用有限權限的 Proxy 帳戶,或是只將 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 的權限。