伺服器層級角色

適用于:yesSQL Server (所有支援的版本) Yes Azure SQL 受控執行個體 yes Analytics Platform System (PDW)

SQL Server提供伺服器層級角色,協助您管理伺服器上的許可權。 這些角色是將其他主體組成群組的安全性主體。 伺服器層級角色的權限範圍為整個伺服器 (「角色」就像是 Windows 作業系統中的「群組」)。

SQL Server 2019 和舊版提供九個固定伺服器角色。 SQL Server 2022 隨附七個額外的伺服器角色,其前置 ##MS_ 詞和尾碼 ## 可區別其他一般使用者建立主體和自訂伺服器角色。 授與固定伺服器角色的許可權 (公用) 無法 變更。 從 SQL Server 2012 (11.x) 開始,您可以建立使用者定義伺服器角色,並將伺服器層級許可權新增至使用者定義伺服器角色。

為了方便和回溯相容性,會提供未以前置詞開頭的 ##MS_ 固定伺服器角色。 盡可能指派更特定的許可權,或使用新的伺服器角色。

就像SQL Server內部部署一樣,伺服器許可權會以階層方式組織。 這些伺服器層級角色所持有的許可權可以傳播至資料庫許可權。 若要讓許可權在資料庫層級有效有用,登入必須是伺服器層級角色 ##MS_DatabaseConnector###的成員,這會授與 所有資料庫的 CONNECT 許可權,或在個別資料庫中擁有使用者帳戶。 這也適用于 master 資料庫。 例如,伺服器層級角色 ##MS_ServerStateReader## 會保留 VIEW SERVER STATE許可權。 如果屬於此角色成員的登入具有資料庫中的使用者帳戶, masterWideWorldImporters 此使用者將具有這兩個資料庫中的 VIEW DATABASE STATE 許可權。

您可以將伺服器層級主體新增 (SQL Server登入、Windows帳戶,以及Windows群組) 至伺服器層級角色。 固定伺服器角色的每個成員可以對相同的角色增加其他登入。 使用者定義伺服器角色的成員無法將其他伺服器主體新增至角色。

已修正伺服器層級角色

注意

SQL Server 2022 之前引進的這些伺服器層級角色無法在 Azure SQL Database 或 Azure Synapse Analytics 中使用。 版權管理有特殊的Azure SQL Database伺服器角色,相當於 SQL Server 2022 中引進的伺服器層級角色。 如需SQL Database的詳細資訊,請參閱控制及授與資料庫存取權。

下表顯示固定伺服器層級角色及其功能。

固定伺服器層級角色 描述
sysadmin sysadmin 固定伺服器角色的成員可以執行伺服器中的所有活動。
serveradmin serveradmin 固定伺服器角色的成員可以變更全伺服器組態選項及關閉伺服器。
securityadmin securityadmin 固定伺服器角色的成員可以管理登入及其屬性。 他們可以 GRANT (授與)、DENY (拒絕) 和 REVOKE (撤銷) 伺服器層級權限。 如果他們擁有資料庫的存取權,也可以 GRANTDENYREVOKE 資料庫層級權限。 此外,他們可以重設SQL Server登入的密碼。

重要:授與存取權給資料庫引擎及設定使用者權限的能力,可讓安全性系統管理員指派大部分的伺服器許可權。 您應該將 securityadmin 角色視為相當於 系統管理員 角色。
processadmin processadmin固定伺服器角色的成員可以結束SQL Server實例中執行的進程。
setupadmin setupadmin固定伺服器角色的成員可以使用 Transact-SQL 語句來新增和移除連結的伺服器。 使用 Management Studio.) 時,需要 (sysadmin成員資格
bulkadmin bulkadmin 固定伺服器角色的成員可以執行 BULK INSERT 陳述式。

Linux 上的 SQL Server不支援bulkadmin角色或 ADMINISTER BULK OPERATIONS 許可權。 只有系統管理員可以針對Linux 上的 SQL Server執行大量插入。
diskadmin diskadmin 固定伺服器角色是用來管理磁碟檔案。
dbcreator dbcreator 固定伺服器角色的成員可以建立、改變、卸除及還原任何資料庫。
public 每個SQL Server登入都屬於公用伺服器角色。 當伺服器主體尚未授與或拒絕安全性實體物件上的特定許可權時,使用者會繼承該物件上授與 公用 的許可權。 只有當您想要將任何物件提供給所有使用者使用時,才指派該物件的 public 權限。 您無法變更公用中的成員資格。

注意:public 的實作方式不同於其他角色,您可以授與、拒絕或撤銷 public 固定伺服器角色的權限。

重要

下列伺服器角色所提供的大部分許可權不適用於 Azure Synapse Analytics - processadmin、serveradminsetupadmindiskadmin

已修正 SQL Server 2022 中引進的伺服器層級角色

下表顯示SQL Server 2022 及其功能引進的其他固定伺服器層級角色。

注意

這些伺服器層級的許可權不適用於 Azure SQL 受控執行個體 或 Azure Synapse Analytics。

內建伺服器層級角色 描述
##MS_DatabaseConnector## ##MS_DatabaseConnector##固定伺服器角色的成員可以連線到任何資料庫,而不需要資料庫中的使用者帳戶才能連線。

若要拒絕特定資料庫的 CONNECT 許可權,使用者可以為資料庫中的這個登入建立相符的使用者帳戶,然後 拒絕 資料庫的 CONNECT 許可權。 此 DENY 許可權會覆寫來自此角色的 GRANT CONNECT 許可權。
##MS_DatabaseManager## ##MS_DatabaseManager##固定伺服器角色的成員可以建立和刪除資料庫。 建立資料庫的 ##MS_DatabaseManager##角色成員會成為該資料庫的擁有者,可讓使用者以使用者身分 dbo 連接到該資料庫。 使用者 dbo 擁有資料庫中的所有資料庫許可權。 ##MS_DatabaseManager##角色的成員不一定有權存取他們不擁有的資料庫。
##MS_DefinitionReader## ##MS_DefinitionReader##固定伺服器角色的成員可以讀取VIEW ANY DEFINITION涵蓋的所有目錄檢視,並分別具有此角色成員具有使用者帳戶之任何資料庫的VIEW DEFINITION許可權。
##MS_LoginManager## ##MS_LoginManager##固定伺服器角色的成員可以建立和刪除登入。
##MS_SecurityDefinitionReader## ##MS_SecurityDefinitionReader##固定伺服器角色的成員可以讀取VIEW ANY SECURITY DEFINITION涵蓋的所有目錄檢視,並分別具有此角色成員具有使用者帳戶之任何資料庫的VIEW SECURITY DEFINITION許可權。 這是 ##MS_DefinitionReader## 伺服器角色可存取的一小部分。
##MS_ServerStateReader## ##MS_ServerStateReader##固定伺服器角色的成員可以讀取所有動態管理檢視, (VIEW SERVER STATE所涵蓋的 DMV) 和函式,並分別具有此角色成員具有使用者帳戶之任何資料庫的VIEW DATABASE STATE許可權。
##MS_ServerStateManager## ##MS_ServerStateManager##固定伺服器角色的成員具有與 ##MS_ServerStateReader##角色相同的許可權。 此外,它也會保留ALTER SERVER STATE許可權,允許存取數個管理作業,例如: DBCC FREEPROCCACHE 、、、 DBCC FREESYSTEMCACHE ('ALL')DBCC SQLPERF()

固定伺服器角色的權限

每個固定伺服器角色都擁有指派給它的特定權限。

SQL Server 2022 中新固定伺服器角色的許可權

每個內建伺服器層級角色都有指派給它的特定許可權。 下表顯示指派給伺服器層級角色的許可權。 只要使用者可以連線到個別資料庫,它也會顯示繼承的資料庫層級許可權。

固定伺服器層級角色 伺服器層級權限 資料庫層級許可權
##MS_DatabaseConnector## CONNECT ANY DATABASE CONNECT
##MS_DatabaseManager## CREATE ANY DATABASE
ALTER ANY DATABASE
ALTER
##MS_DefinitionReader## VIEW ANY DATABASE
VIEW ANY DEFINITION
檢視任何安全性定義
VIEW DEFINITION
檢視安全性定義
##MS_LoginManager## CREATE LOGIN
ALTER ANY LOGIN
N/A
##MS_SecurityDefinitionReader## 檢視任何安全性定義 檢視安全性定義
##MS_ServerStateReader## VIEW SERVER STATE
檢視伺服器效能狀態
檢視伺服器安全性狀態
VIEW DATABASE STATE
檢視資料庫效能狀態
檢視資料庫安全性狀態
##MS_ServerStateManager## ALTER SERVER STATE
VIEW SERVER STATE
檢視伺服器效能狀態
檢視伺服器安全性狀態
VIEW DATABASE STATE
檢視資料庫效能狀態
檢視資料庫安全性狀態

SQL Server 2019 和更早版本的伺服器角色許可權

下圖顯示指派給舊版伺服器角色的許可權, (SQL Server 2019 和舊版) 。
fixed_server_role_permissions

重要

CONTROL SERVER 權限與 系統管理員 固定伺服器角色類似但不完全相同。 權限不代表角色成員資格,角色成員資格也不會授與權限。 (例如 ,CONTROL SERVER 不表示 sysadmin 固定伺服器角色的成員資格。) 不過,有時可以在角色與對等許可權之間模擬。 大部分 DBCC 命令與許多系統程序都需要系統管理員固定伺服器角色的成員資格。 如需需要 系統管理員 成員資格的 171 個系統預存程序清單,請參閱 Andreas Wolter 的下列部落格文章: CONTROL SERVER vs. sysadmin/sa: permissions, system procedures, DBCC, automatic schema creation and privilege escalation - caveats

伺服器層級權限

只有伺服器層級權限可加入至使用者定義伺服器角色。 若要列出伺服器層級權限,請執行以下陳述式。 伺服器層級權限為:

SELECT * FROM sys.fn_builtin_permissions('SERVER') ORDER BY permission_name;  

如需許可權的詳細資訊,請參閱許可權 (資料庫引擎) sys.fn_builtin_permissions (Transact-SQL)

使用伺服器層級角色

下表將說明可用來處理伺服器層級角色的命令、檢視和函數。

功能 類型 描述
sp_helpsrvrole (Transact-SQL) 中繼資料 傳回伺服器層級角色的清單。
sp_helpsrvrolemember (Transact-SQL) 中繼資料 傳回伺服器層級角色成員的相關資訊。
sp_srvrolepermission (Transact-SQL) 中繼資料 顯示伺服器層級角色的權限。
IS_SRVROLEMEMBER (Transact-SQL) 中繼資料 指出SQL Server登入是否為指定伺服器層級角色的成員。
sys.server_role_members (Transact-SQL) 中繼資料 針對每個伺服器層級角色的每個成員,各傳回一個資料列。
CREATE SERVER ROLE (Transact-SQL) Command 建立使用者定義伺服器角色。
ALTER SERVER ROLE (Transact-SQL) Command 變更伺服器角色的成員資格或變更使用者定義伺服器角色的名稱。
DROP SERVER ROLE (Transact-SQL) Command 移除使用者定義伺服器角色。
sp_addsrvrolemember (Transact-SQL) Command 加入一個登入,做為伺服器層級角色的成員。 已被取代。 請改用 ALTER SERVER ROLE
sp_dropsrvrolemember (Transact-SQL) Command 從伺服器層級角色移除SQL Server登入或Windows使用者或群組。 已被取代。 請改用 ALTER SERVER ROLE

另請參閱

資料庫層級角色
安全性目錄檢視 (Transact-SQL)
安全性函數 (Transact-SQL)
保護 SQL Server 的安全
GRANT 伺服器主體權限 (Transact-SQL)
REVOKE 伺服器主體權限 (Transact-SQL)
DENY 伺服器主體權限 (Transact-SQL)
建立伺服器角色
Azure SQL Database伺服器角色以進行版權管理