SQL Server 提供服务器级角色来帮助管理服务器上的权限。 这些角色是将其他主体分组的安全主体。 服务器级角色的权限范围涵盖整个服务器。 (角色 类似于 Windows作系统中的 组 。
为方便和向后兼容,提供了固定服务器角色。 尽可能分配更具体的权限。
SQL Server 提供九个固定服务器角色。 无法更改授予固定服务器角色的权限。 从 SQL Server 2012 开始,可以创建用户定义的服务器角色,并将服务器级权限添加到用户定义的服务器角色。
可以将服务器级主体(SQL Server 登录名、Windows 帐户和 Windows 组)添加到服务器级角色。 固定服务器角色的每个成员都可以将其他登录名添加到该同一角色。 用户定义的服务器角色的成员不能将其他服务器主体添加到该角色。
修复了 Server-Level 的角色配置
下表显示了服务器级的固定角色及其权限。
服务器级的固定角色 | DESCRIPTION |
---|---|
系统管理员 | sysadmin 固定服务器角色的成员可以在服务器中执行任何活动。 |
服务器管理员 | serveradmin 固定服务器角色的成员可以更改服务器范围的配置选项并关闭服务器。 |
安全管理员 | securityadmin 固定服务器角色的成员管理登录名及其属性。 他们可以授予、拒绝和撤销服务器级权限。 他们还可以授予、拒绝和 REVOKE 数据库级权限(如果他们有权访问数据库)。 此外,他们可以重置 SQL Server 登录名的密码。 ** 安全说明 ** 授予数据库引擎访问权限和配置用户权限的功能允许安全管理员分配大多数服务器权限。 该 securityadmin 角色应被视为等效于该 sysadmin 角色。 |
processadmin | processadmin 固定服务器角色的成员可以结束在 SQL Server 实例中运行的进程。 |
setupadmin | setupadmin 固定服务器角色的成员可以使用 Transact-SQL 语句添加或删除链接服务器。 (使用 Management Studio 时需要 sysadmin 成员身份。 |
bulkadmin | bulkadmin 固定服务器角色的成员可以运行 BULK INSERT 语句。 |
磁盘管理员 | diskadmin 固定服务器角色用于管理磁盘文件。 |
dbcreator | dbcreator 固定服务器角色的成员可以创建、更改、删除和还原任何数据库。 |
公共 | 每个 SQL Server 登录名都属于公共服务器角色。 如果未向服务器主体授予或拒绝对安全对象的特定权限,则用户将继承对该对象公开的权限。 仅当希望该对象可供所有用户使用时,才对任何对象分配公共权限。 不能更改公共成员身份。 注意:公共的实现方式与其他角色不同。 但是,可以向公众授予、拒绝或撤销权限。 |
固定服务器角色的权限
每个固定服务器角色都为其分配了特定权限。 有关分配给服务器角色的权限的图表,请参阅 数据库引擎固定服务器和固定数据库角色。
重要
权限 CONTROL SERVER
类似于固定服务器角色,但并不完全相同 sysadmin
。 权限并不表示角色成员身份,角色成员身份不授予权限。 (例如,CONTROL SERVER
并不意味着具有 sysadmin
固定服务器角色的成员身份。但是,有时可以在角色和等效权限之间进行身份扮演。 大多数 DBCC
命令和许多系统过程都需要具有固定服务器角色 sysadmin
。 有关需要 sysadmin
成员身份的 171 个系统存储过程的列表,请参阅 Andreas Wolter CONTROL SERVER 与 sysadmin/sa 的以下博客文章:权限、系统过程、DBCC、自动架构创建和特权提升 - 注意事项。
Server-Level 权限
只能将服务器级权限添加到用户定义的服务器角色。 若要列出服务器级权限,请执行以下语句。 服务器级权限包括:
SELECT * FROM sys.fn_builtin_permissions('SERVER') ORDER BY permission_name;
有关权限的详细信息,请参阅权限(数据库引擎)和sys.fn_builtin_permissions(Transact-SQL)。
使用 Server-Level 角色
下表介绍了可用于处理服务器级角色的命令、视图和函数。
功能 / 特点 | 类型 | DESCRIPTION |
---|---|---|
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) | 指令 | 将登录添加为服务器级别角色的成员。 已弃用。 请改用 ALTER SERVER ROLE 。 |
sp_dropsrvrolemember(Transact-SQL) | 指令 | 从服务器级角色中移除一个 SQL Server 登录名或一个 Windows 用户或组。 已弃用。 请改用 ALTER SERVER ROLE 。 |
CREATE SERVER ROLE (Transact-SQL) | 指令 | 创建用户定义的服务器角色。 |
ALTER SERVER ROLE (Transact-SQL) | 指令 | 更改服务器角色的成员身份或更改用户定义的服务器角色的名称。 |
DROP SERVER ROLE (Transact-SQL) | 指令 | 删除用户定义的服务器角色。 |
IS_SRVROLEMEMBER(Transact-SQL) | 功能 | 确定服务器角色的成员身份。 |
另请参阅
数据库级别的角色
安全性目录视图 (Transact-SQL)
安全函数 (Transact-SQL)
保护 SQL Server
通过 GRANT 语句授予服务器主体权限 (Transact-SQL)
撤销服务器主体权限(Transact-SQL)
拒绝服务器主体权限(Transact-SQL)
创建服务器角色