CREATE SERVER ROLE (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

创建新的用户定义的服务器角色。

Transact-SQL 语法约定

语法

CREATE SERVER ROLE role_name [ AUTHORIZATION server_principal ]  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

role_name

待创建的服务器角色的名称。

AUTHORIZATION server_principal

将拥有新服务器角色的登录名。 如果未指定登录名,则执行 CREATE SERVER ROLE 的登录名将拥有该服务器角色。

注解

服务器角色是服务器级别的安全对象。 创建服务器角色后,使用 GRANT、DENY 和 REVOKE 配置角色的服务器级别权限。 若要在数据库角色中添加登录名或从中删除登录名,请使用 ALTER SERVER ROLE (Transact-SQL)。 若要删除服务器角色,请使用 DROP SERVER ROLE (Transact SQL)。 有关详细信息,请参阅 ys.server_principals (Transact-SQL)

可通过查询 sys.server_role_memberssys.server_principals 目录视图查看服务器角色。

不能向服务器角色授予对数据库级安全对象的权限。 若要创建数据库角色,请参阅 CREATE ROLE (Transact-SQL)

有关设计权限系统的信息,请参阅 Getting Started with Database Engine Permissions

权限

要求具有 CREATE SERVER ROLE 权限,或者 sysadmin 固定服务器角色中的成员身份。

还需要针对登录名的 server_principal 的 IMPERSONATE 权限、针对用作 server_principal的服务器角色的 ALTER 权限或用作 server_principal 的 Windows 组的成员身份。

这会触发对象类型设置为服务器角色、事件类型设置为添加的 Audit Server Principal Management 事件。

使用 AUTHORIZATION 选项分配服务器角色所有权时,还需要具有下列权限:

  • 若要将服务器角色的所有权分配给另一个登录名,则需要对该登录名具有 IMPERSONATE 权限。

  • 若要将服务器角色的所有权分配给另一个服务器角色,则需要具有被分配服务器角色的成员身份或对该服务器角色具有 ALTER 权限。

示例

A. 创建由登录名拥有的服务器角色

以下示例将创建一个由登录名 buyers 拥有的服务器角色 BenMiller

USE master;  
CREATE SERVER ROLE buyers AUTHORIZATION BenMiller;  
GO  

B. 创建由固定服务器角色拥有的服务器角色

以下示例将创建一个由 auditors 固定服务器角色拥有的服务器角色 securityadmin

USE master;  
CREATE SERVER ROLE auditors AUTHORIZATION securityadmin;  
GO  

后续步骤