ALTER SERVER ROLE (Transact-SQL)
更改服务器角色的成员身份,或者更改用户定义的服务器角色的名称。 无法重命名固定服务器角色。
语法
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。WITH NAME **=**new_server_role_name
指定用户定义的服务器角色的新名称。 服务器中不能已存在此名称。
注释
更改用户定义的服务器角色名称并不会更改角色的 ID 号、所有者或权限。
在更改角色成员身份方面,ALTER SERVER ROLE 替代了 sp_addsrvrolemember 和 sp_dropsrvrolemember。 不推荐使用这些存储过程。
您可以通过查询 sys.server_role_members 和 sys.server_principals 目录视图来查看服务器角色。
若要更改用户定义的服务器角色的所有者,请使用 ALTER AUTHORIZATION (Transact-SQL)。
权限
要求在服务器上具有 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.在服务器角色中添加域帐户
以下示例在名为 Production 的用户定义服务器角色中添加一个名为 adventure-works\roberto0 的域帐户。
ALTER SERVER ROLE Production ADD MEMBER [adventure-works\roberto0] ;
C.在服务器角色中添加 SQL Server 登录名
以下示例在 diskadmin 固定服务器角色中添加一个名为 Ted 的 SQL Server 登录名。
ALTER SERVER ROLE diskadmin ADD MEMBER Ted ;
GO
D.从服务器角色中删除域帐户
以下示例从名为 Production 的用户定义服务器角色中删除一个名为 adventure-works\roberto0 的域帐户。
ALTER SERVER ROLE Production DROP MEMBER [adventure-works\roberto0] ;
E.从服务器角色中删除 SQL Server 登录名
以下示例从 diskadmin 固定服务器角色中删除 SQL Server 登录名 Ted。
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
请参阅
参考
CREATE SERVER ROLE (Transact-SQL)
DROP SERVER ROLE (Transact-SQL)
sys.server_role_members (Transact-SQL)
sys.server_principals (Transact-SQL)