服务器级别角色

SQL Server 提供服务器级角色以帮助你管理服务器上的权限。 这些角色是可组合其他主体的安全主体。 服务器级角色的权限作用域为服务器范围。 (“角色”类似于 Windows 操作系统中的“组”。)

提供固定服务器角色是为了方便使用和向后兼容。 应尽可能分配更具体的权限。

SQL Server 提供了九种固定服务器角色。 无法更改授予固定服务器角色的权限。 从 SQL Server 2012 开始,可以创建用户定义的服务器角色,并为用户定义的服务器角色添加服务器级权限。

你可以将服务器级主体(SQL Server 登录名、Windows 帐户和 Windows 组)添加到服务器级角色。 固定服务器角色的每个成员都可以将其他登录名添加到该同一角色。 用户定义的服务器角色的成员则无法将其他服务器主体添加到角色。

服务器级的固定角色

下表显示了服务器级的固定角色及其权限。

服务器级的固定角色 说明
sysadmin sysadmin 固定服务器角色的成员可以在服务器上执行任何活动。
serveradmin serveradmin 固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。
securityadmin securityadmin 固定服务器角色的成员可以管理登录名及其属性。 他们可以 GRANT、DENY 和 REVOKE 服务器级别的权限。 他们还可以 GRANT、DENY 和 REVOKE 数据库级权限(如果他们具有数据库的访问权限)。 此外,他们还可以重置 SQL Server 登录名的密码。

** 安全说明 ** 授予数据库引擎访问权限和配置用户权限的功能允许安全管理员分配大多数服务器权限。 应 securityadmin 将角色视为与 角色 sysadmin 等效。
processadmin processadmin 固定服务器角色的成员可以终止在 SQL Server 实例中运行的进程。
setupadmin setupadmin 固定服务器角色的成员可以使用 Transact-SQL 语句添加和删除链接服务器。 (使用 Management Studio 时需要 sysadmin 成员资格。)
bulkadmin bulkadmin 固定服务器角色的成员可以运行 BULK INSERT 语句。
diskadmin diskadmin 固定服务器角色用于管理磁盘文件。
dbcreator dbcreator 固定服务器角色的成员可以创建、更改、删除和还原任何数据库。
公共 每个 SQL Server 登录名都属于 public 服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的 public 角色的权限。 只有在希望所有用户都能使用对象时,才在对象上分配 Public 权限。 你无法更改具有 Public 角色的成员身份。

注意:public 角色的实现方式与其他角色不同。 但是,可以从 public 授予、拒绝或撤销权限。

固定服务器角色的权限

每个固定服务器角色都被分配了特定的权限。 有关分配给服务器角色的权限的图表,请参阅 数据库引擎固定服务器和固定数据库角色

重要

CONTROL SERVER 权限与 sysadmin 固定服务器角色类似,但并不完全相同。 权限并不表示角色成员身份,并且角色成员身份不会授予权限。 例如, (CONTROL SERVER 并不意味着 sysadmin 固定服务器 role.) 但是,有时可以在角色与等效权限之间模拟。 大多数 DBCC 命令和许多系统过程要求 sysadmin 固定服务器角色的成员身份。 有关需要 sysadmin 成员身份的 171 个系统存储过程的列表,请参阅 Andreas Wolter CONTROL SERVER vs. sysadmin/sa 的以下博客文章:权限、系统过程、DBCC、自动架构创建和特权提升 - 注意事项

服务器级权限

只能向用户定义的服务器角色中添加服务器级权限。 若要列出服务器级权限,请执行下面的语句。 服务器级权限如下:

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

有关权限的详细信息,请参阅 数据库引擎) (权限 sys.fn_builtin_permissions (Transact-SQL)

使用服务器级角色

下表介绍了可以用于服务器级角色的命令、视图和功能。

Feature 类型 说明
sp_helpsrvrole (Transact-SQL) 元数据 返回服务器级角色的列表。
sp_helpsrvrolemember (Transact-SQL) 元数据 返回有关服务器级角色成员的信息。
sp_srvrolepermission (Transact-SQL) 元数据 显示服务器级角色的权限。
IS_SRVROLEMEMBER (Transact-SQL) 元数据 指示 SQL Server 登录名是否为指定服务器级角色的成员。
sys.server_role_members (Transact-SQL) 元数据 为每个服务器级角色的每个成员返回一行。
sp_addsrvrolemember (Transact-SQL) Command 将登录名添加为某个服务器级角色的成员。 已弃用。 应改用 ALTER SERVER ROLE
sp_dropsrvrolemember (Transact-SQL) Command 从服务器级角色中删除 SQL Server 登录名或 Windows 用户或组。 已弃用。 应改用 ALTER SERVER ROLE
CREATE SERVER ROLE (Transact-SQL) Command 创建用户定义的服务器角色。
ALTER SERVER ROLE (Transact-SQL) Command 更改服务器角色的成员关系或更改用户定义的服务器角色的名称。
DROP SERVER ROLE (Transact-SQL) Command 删除用户定义的服务器角色。
IS_SRVROLEMEMBER (Transact-SQL) 函数 确定服务器角色的成员关系。

另请参阅

数据库级别的角色
安全性目录视图 (Transact-SQL)
安全函数 (Transact-SQL)
保护 SQL Server
通过 GRANT 语句授予服务器主体权限 (Transact-SQL)
撤消服务器主体权限 (Transact-SQL)
拒绝服务器主体权限 (Transact-SQL)
创建服务器角色