ALTER ROLE (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Microsoft Fabric 中的 SQL 分析终结点 Microsoft Fabric 中的仓库
为数据库角色添加或删除成员,或更改用户定义的数据库角色的名称。
注意
若要在 Azure Synapse Analytics 和 Analytics Platform System (PDW) 中添加或删除角色成员,请使用 sp_addrolemember (Transact-SQL) 和 sp_droprolemember (Transact-SQL)。
语法
SQL Server(2012 及更高版本)、Azure SQL 托管实例、Azure SQL 数据库和 Microsoft Fabric 的语法。
ALTER ROLE role_name
{
ADD MEMBER database_principal
| DROP MEMBER database_principal
| WITH NAME = new_name
}
[;]
2012 版前的 SQL Server 语法。
-- Change the name of a user-defined database role
ALTER ROLE role_name
WITH NAME = new_name
[;]
参数
role_name
适用于:SQL Server(2008 及更高版本)、Azure SQL 数据库、Azure SQL 托管实例
指定要更改的数据库角色。
ADD MEMBER database_principal
适用于:SQL Server(2012 及更高版本)、Azure SQL 数据库、Azure SQL 托管实例
指定向数据库角色的成员身份添加数据库主体。
database_principal 是数据库用户或用户定义的数据库角色。
database_principal 不能是固定的数据库角色或是服务器主体。
DROP MEMBER database_principal
适用于:SQL Server(2012 及更高版本)、Azure SQL 数据库、Azure SQL 托管实例
指定从数据库角色的成员身份删除数据库主体。
database_principal 是数据库用户或用户定义的数据库角色。
database_principal 不能是固定的数据库角色或是服务器主体。
WITH NAME = new_name
适用于:SQL Server(2008 及更高版本)、Azure SQL 数据库、Azure SQL 托管实例
指定更改用户定义的数据库角色的名称。 数据库中必须尚未包含新名称。
更改数据库角色的名称不会更改角色的 ID 号、所有者或权限。
权限
需具有以下一项或多项权限或成员身份才能运行此命令:
- 对角色具有 ALTER 权限
- 对数据库具有 ALTER ANY ROLE 权限
- 具有 db_securityadmin 固定数据库角色的成员身份
此外,若要更改固定数据库角色中的成员身份还需要:
- 具有 db_owner 固定数据库角色的成员身份
限制和局限
不能更改固定数据库角色的名称。
Metadata
这些系统视图中包含有关数据库角色和数据库主体的信息。
示例
A. 更改数据库角色的名称
适用于:SQL Server(2008 及更高版本)、Azure SQL 数据库、Azure SQL 托管实例
以下示例将角色 buyers
的名称更改为 purchasing
。 本示例可以在 AdventureWorks 示例数据库中执行。
ALTER ROLE buyers WITH NAME = purchasing;
B. 添加或删除角色成员
适用于:SQL Server(2012 及更高版本)、Azure SQL 数据库、Azure SQL 托管实例
此示例创建一个名为 Sales
的数据库角色。 示例向成员身份添加一个名为 Barry 的数据库用户,然后演示如何删除成员 Barry。 本示例可以在 AdventureWorks 示例数据库中执行。
CREATE ROLE Sales;
ALTER ROLE Sales ADD MEMBER Barry;
ALTER ROLE Sales DROP MEMBER Barry;
C. 将角色成员添加到 Azure SQL 数据库的特殊角色
适用对象:Azure 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)