ALTER ROLE (Transact-SQL)

适用于: 是SQL Server(所有支持的版本) 是Azure SQL 数据库 是Azure SQL 托管实例 是Azure Synapse Analytics 是并行数据仓库

为数据库角色添加或删除成员,或更改用户定义的数据库角色的名称。

备注

若要更改在 Azure Synapse Analytics 或 Analytics Platform System (PDW) 中添加或删除成员的角色,请使用 sp_addrolemember (Transact-SQL)sp_droprolemember (Transact-SQL)

主题链接图标 Transact-SQL 语法约定

语法

-- Syntax for SQL Server (starting with 2012) and Azure SQL Database  
  
ALTER ROLE  role_name  
{  
       ADD MEMBER database_principal  
    |  DROP MEMBER database_principal  
    |  WITH NAME = new_name  
}  
[;]  
-- Syntax for SQL Server 2008, Azure Synapse Analytics and Parallel Data Warehouse
  
-- Change the name of a user-defined database role  
ALTER ROLE role_name   
    WITH NAME = new_name  
[;]  

备注

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

参数

role_name
适用对象:SQL Server(从 2008 开始)、Azure SQL 数据库

指定要更改的数据库角色。

ADD MEMBER database_principal
适用对象:SQL Server(从 2012 开始)、Azure SQL 数据库

指定向数据库角色的成员身份添加数据库主体。

  • database_principal 是数据库用户或用户定义的数据库角色。

  • database_principal 不能是固定的数据库角色或是服务器主体。

DROP MEMBER database_principal
适用对象:SQL Server(从 2012 开始)、Azure SQL 数据库

指定从数据库角色的成员身份删除数据库主体。

  • database_principal 是数据库用户或用户定义的数据库角色。

  • database_principal 不能是固定的数据库角色或是服务器主体。

WITH NAME = new_name
适用对象:SQL Server(从 2008 开始)、Azure SQL 数据库

指定更改用户定义的数据库角色的名称。 数据库中必须尚未包含新名称。

更改数据库角色的名称不会更改角色的 ID 号、所有者或权限。

权限

需具有以下一项或多项权限或成员身份才能运行此命令:

  • 对角色具有 ALTER 权限
  • 对数据库具有 ALTER ANY ROLE 权限
  • 具有 db_securityadmin 固定数据库角色的成员身份

此外,若要更改固定数据库角色中的成员身份还需要:

  • 具有 db_owner 固定数据库角色的成员身份

限制和局限

不能更改固定数据库角色的名称。

Metadata

这些系统视图中包含有关数据库角色和数据库主体的信息。

示例

A. 更改数据库角色的名称

适用对象:SQL Server(从 2008 开始)、SQL 数据库

以下示例将角色 buyers 的名称更改为 purchasing。 本示例可以在 AdventureWorks 示例数据库中执行。

ALTER ROLE buyers WITH NAME = purchasing;  

B. 添加或删除角色成员

适用对象:SQL Server(从 2012 开始)、SQL 数据库

此示例创建一个名为 Sales 的数据库角色。 示例向成员身份添加一个名为 Barry 的数据库用户,然后演示如何删除成员 Barry。 本示例可以在 AdventureWorks 示例数据库中执行。

CREATE ROLE Sales;  
ALTER ROLE Sales ADD MEMBER Barry;  
ALTER ROLE Sales DROP MEMBER Barry;  

C. 将角色成员添加到 Azure SQL 数据库和 Azure Synapse Analytics 的特殊角色

适用范围: SQL Server(Azure SQL 数据库和 Azure Synapse),SQL 数据库

此示例在 master 数据库中创建 SQL 登录名,创建与该服务器登录名相关的数据库用户,并将该数据库用户添加为特殊角色 dbmanager 的成员。 该示例允许用户权限在 Azure SQL 数据库逻辑服务器上创建和删除数据库。 在 Azure SQL 数据库逻辑服务器的 master 数据库上运行该示例。

 CREATE LOGIN sqllogin_nlastname WITH password='aah3%#om1os';
    
 CREATE USER sqllogin_nlastname FOR LOGIN sqllogin_nlastname 
 WITH DEFAULT_SCHEMA = master;
    
 ALTER ROLE [dbmanager] add member sqllogin_nlastname;

另请参阅

CREATE ROLE (Transact-SQL)
主体(数据库引擎)
DROP ROLE (Transact-SQL)
sp_addrolemember (Transact-SQL)
sys.database_role_members (Transact-SQL)
sys.database_principals (Transact-SQL)