ALTER SERVER ROLE (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

更改服务器角色的成员关系或更改用户定义的服务器角色的名称。 无法重命名固定服务器角色。

Transact-SQL 语法约定

语法

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Managed Instance
  
ALTER SERVER ROLE server_role_name   
{  
    [ ADD MEMBER server_principal ]  
  | [ DROP MEMBER server_principal ]  
  | [ WITH NAME = new_server_role_name ]  
} [ ; ]  

参数

server_role_name

要更改的服务器角色的名称。

ADD MEMBER server_principal

将指定的服务器主体添加到服务器角色中。 server_principal 可以是登录名或用户定义的服务器角色。 server_principal 不能是固定服务器角色、数据库角色或 sa。

DROP MEMBER server_principal

从服务器角色中删除指定的服务器主体。 server_principal 可以是登录名或用户定义的服务器角色。 server_principal 不能是固定服务器角色、数据库角色或 sa。

名称 =new_server_role_name

指定用户定义的服务器角色的新名称。 服务器中不能已存在此名称。

备注

更改用户定义的服务器角色名称并不会更改角色的 ID 号、所有者或权限。

为了更改角色成员身份,ALTER SERVER ROLE 会替换 sp_addsrvrolemember 和 sp_dropsrvrolemember。 不推荐使用这些存储过程。

您可以通过查询 sys.server_role_members 和 sys.server_principals 目录视图来查看服务器角色。

要更改用户自定义服务器角色的所有者,请使用 ALTER AUTHORIZATION (Transact-SQL)

在 Azure SQL 数据库中,ALTER SERVER ROLE 必须在 master 数据库中运行。

权限

要求在服务器上具有 ALTER ANY SERVER ROLE 权限才能更改用户定义的服务器角色的名称。

固定服务器角色

若要为固定服务器角色添加成员,您必须是该固定服务器角色的成员,或者是 sysadmin 固定服务器角色的成员。

注意

CONTROL SERVER 和 ALTER ANY SERVER ROLE 权限不足以为固定服务器角色执行 ALTER SERVER ROLE,并且不能为固定服务器角色授予 ALTER权限。

用户定义的服务器角色

若要为用户定义的服务器角色添加成员,您必须是 sysadmin 固定服务器角色的成员,或者具有 CONTROL SERVER 或 ALTER ANY SERVER ROLE 权限。 否则,必须具有该角色的 ALTER 权限。

注意

与固定服务器角色不同,用户定义的服务器角色的成员本身并不具备为该同一角色添加成员的权限。

示例

A. 更改服务器的名称

以下示例创建一个名为 Product 的服务器角色,然后将该服务器角色的名称更改为 Production。

CREATE SERVER ROLE Product ;  
ALTER SERVER ROLE Product WITH NAME = Production ;  
GO  

B. 在服务器角色中添加域帐户

以下示例在名为 adventure-works\roberto0 的用户定义服务器角色中添加一个名为 Production 的域帐户。

ALTER SERVER ROLE Production ADD MEMBER [adventure-works\roberto0] ;  

C. 在服务器角色中添加 SQL Server 登录名

以下示例在 Ted 固定服务器角色中添加一个名为 diskadmin 的 SQL Server 登录名。

ALTER SERVER ROLE diskadmin ADD MEMBER Ted ;  
GO  

D. 从服务器角色中移除域帐户

以下示例从名为 adventure-works\roberto0 的用户定义服务器角色中删除一个名为 Production 的域帐户。

ALTER SERVER ROLE Production DROP MEMBER [adventure-works\roberto0] ;  

E. 从服务器角色中移除 SQL Server 登录名

以下示例从 Ted 固定服务器角色中删除 SQL Server 登录名 diskadmin。

ALTER SERVER ROLE Production DROP MEMBER Ted ;  
GO  

F. 为登录名授予权限以将登录名添加到用户定义的服务器角色中

以下示例允许 Ted 将其他登录名添加到名为 Production 的用户定义服务器角色中。

GRANT ALTER ON SERVER ROLE::Production TO Ted ;  
GO  

G. 查看角色成员身份

若要查看角色成员身份,请使用 SQL Server Management Studio 中的服务器角色(成员)页或执行以下查询:

SELECT SRM.role_principal_id, SP.name AS Role_Name,   
SRM.member_principal_id, SP2.name  AS Member_Name  
FROM sys.server_role_members AS SRM  
JOIN sys.server_principals AS SP  
    ON SRM.Role_principal_id = SP.principal_id  
JOIN sys.server_principals AS SP2   
    ON SRM.member_principal_id = SP2.principal_id  
ORDER BY  SP.name,  SP2.name